如何在Django ORM中使用filter()过滤两个不同值上的相同字段?

时间:2012-01-13 02:59:38

标签: django-models

我有一个模型(1),其中一个字段指向另一个模型(2)。我有一个来自模型(2)的值列表,我想在模型(1)中过滤所有这些值。

基本上我想这样做:

SomeModel.objects.filter(field1=x OR field1=y OR field1=z)

这是可能的,在文档中找不到任何内容。

2 个答案:

答案 0 :(得分:9)

如果你想将它们“或”在一起,Q对象应该可以帮助你实现这个目标:

from django.db.models import Q
Samplemodel.objects.filter(Q(field1='x') | Q(field1='y'))

参考链接:http://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects

答案 1 :(得分:0)

您可以使用field1__in=['x', 'y']

执行此操作
Samplemodel.objects.filter(field1__in=['x', 'y'])