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

0x4*_*B1D 2 django-models

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

基本上我想这样做:

SomeModel.objects.filter(field1=x OR field1=y OR field1=z)
Run Code Online (Sandbox Code Playgroud)

这有可能,在文档中找不到任何内容.

小智 9

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

from django.db.models import Q
Samplemodel.objects.filter(Q(field1='x') | Q(field1='y'))
Run Code Online (Sandbox Code Playgroud)

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