Python 如何过滤Django对象以接受匹配项和空值?

Python 如何过滤Django对象以接受匹配项和空值?,python,django,orm,filter,Python,Django,Orm,Filter,我有一个模型,它有一个ForeignKey字段,null=True 字段语义是空条目是允许的,而非空条目将其绑定到外部表中的一行 我想构建一个ORM过滤器,它对应于: SELECT * FROM foo WHERE foo.fk_field = ? OR foo.fk_field IS NULL 其中,问号表示外部表中的单个值 是否可以在Django ORM中执行此操作,因此是否需要使用原始查询?使用: 使用: 可以使用以下对象实现此目的: 可以使用以下对象实现此目的: 我认为这比其他答案更具

我有一个模型,它有一个ForeignKey字段,null=True

字段语义是空条目是允许的,而非空条目将其绑定到外部表中的一行

我想构建一个ORM过滤器,它对应于:

SELECT * FROM foo
WHERE foo.fk_field = ?
OR foo.fk_field IS NULL
其中,问号表示外部表中的单个值

是否可以在Django ORM中执行此操作,因此是否需要使用原始查询?

使用:

使用:


可以使用以下对象实现此目的:


可以使用以下对象实现此目的:


我认为这比其他答案更具可读性。请注意,我不确定这是什么时候开始得到支持的

Foo.objects.filter(a=b) | Bar.objects.filter(c=d)

我认为这比其他答案更具可读性。请注意,我不确定这是什么时候开始得到支持的

Foo.objects.filter(a=b) | Bar.objects.filter(c=d)

谢谢你的回答,但是我已经接受了卡塔瓦兰的回答,因为它是几秒钟之前。谢谢你的回答,但是我已经接受了卡塔瓦兰的回答,因为它是几秒钟之前。
Foo.objects.filter(a=b) | Bar.objects.filter(c=d)