我的模型有ForeignKey
字段,null=True
。
字段语义是NULL条目是允许的,而非NULL条目将它绑定到外表中的单个行。
我想构建一个对应于:
的ORM过滤器SELECT * FROM foo
WHERE foo.fk_field = ?
OR foo.fk_field IS NULL
(问号代表外表中的单个值。)
是否可以在Django ORM中执行此操作,所以我是否需要求助raw
查询?
答案 0 :(得分:3)
使用Q objects:
from django.db.models import Q
Foo.objects.filter(Q(fk_field=fk_value) | Q(fk_field=None))
答案 1 :(得分:2)
您可以使用Q个对象实现此目的:
from django.db.models import Q
Foo.objects.filter(Q(fk=fk) | Q(fk__isnull=True))
答案 2 :(得分:0)
我认为这比其他答案更具可读性。请注意,我不确定何时开始支持它。
Foo.objects.filter(a=b) | Bar.objects.filter(c=d)