Skip to main content
 首页 » 编程设计

python之如何过滤 Django 对象以接受匹配项和 NULL

2025年05月04日106cmt

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

字段语义是 NULL 条目是允许的,而非 NULL 条目将其绑定(bind)到外部表中的单个行。

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

SELECT * FROM foo 
WHERE foo.fk_field = ? 
OR foo.fk_field IS NULL 

(其中问号代表外部表中的单个值。)

是否可以在 Django ORM 中执行此操作,那么我是否需要求助于 raw 查询?

请您参考如下方法:

使用 Q objects :

from django.db.models import Q 
 
Foo.objects.filter(Q(fk_field=fk_value) | Q(fk_field=None))