如何创建一个"AND"过滤器来检索Django中的对象?例如,我想在一个字段中检索一个包含两个单词组合的行.
例如,当我在mysql数据库上运行它时,以下SQL查询就是这样做的:
select * from myapp_question
where ((question like '%software%') and (question like '%java%'))
Run Code Online (Sandbox Code Playgroud)
你如何使用过滤器在Django中实现这一目标?
Dav*_*ger 98
为了彻底起见,我们只提一下Q
对象方法:
from django.db.models import Q
criterion1 = Q(question__contains="software")
criterion2 = Q(question__contains="java")
q = Question.objects.filter(criterion1 & criterion2)
Run Code Online (Sandbox Code Playgroud)
请注意,这里的其他答案更简单,更适合您的用例,但如果有任何类似但稍微复杂的问题(例如需要"不"或"或")看到这一点,那么最好在此处引用该引用.
And*_*sio 82
mymodel.objects.filter(first_name__icontains="Foo", first_name__icontains="Bar")
Run Code Online (Sandbox Code Playgroud)
更新:很长一段时间以来我写了这个答案并完成了一些django,但我相信最好的方法是使用像David Berger这样的Q对象方法:如何在Django过滤器中使用AND?
你可以在Django中链接过滤表达式:
q = Question.objects.filter(question__contains='software').filter(question__contains='java')
Run Code Online (Sandbox Code Playgroud)
您可以在" 链接过滤器 " 中的Django文档中找到更多信息.