在Django中的objects.filter()上使用布尔值

时间:2011-05-08 16:35:22

标签: django django-models

如何在对象过滤器上使用布尔值。例如 -

Emails.objects.filter(id=1 or id=2)

Emails.objects.filter(name='tom' and domain = 'gmail.com')

这些如何转化为可用的语法?谢谢。

2 个答案:

答案 0 :(得分:5)

另一种做OR的方法是使用Q。您可以像布尔一样AND和OR它们

# Filter emails whose id is 1 or 2
Emails.objects.filter(Q(id=1) | Q(id=2))

当然,Q的预期用途是可以构建像

这样的查询
# Filter emails whose id is 1 or name is 'tom'
Emails.objects.filter(Q(id=1) | Q(name='tom'))

要做AND,显而易见的方法是在Ignacio的答案中指定一个接一个的属性:)

答案 1 :(得分:4)

Emails.objects.filter(id__in=[1, 2])

Emails.objects.filter(name='tom', domain='gmail.com')