Django 查询空的related_set

标签 django left-join

我有两个具有一对多关系的模型 - parent 和 child 。我想查询所有没有 child 的 parent 。在 SQL 中,我会做这样的事情:

SELECT p.*
    FROM parent p
    LEFT JOIN children c on (p.id=c.parent_id)
WHERE c.id IS NULL

如何对单个 Django 查询执行相同的操作?

该模型的相关部分是:
class Parent(model):
    ...

class Child(model):
    parent = ForeignKey(Parent, related_name='children')

最佳答案

使用 isnull 字段查找,其中:

Takes either True or False, which correspond to SQL queries of IS NULL and IS NOT NULL, respectively.



因此,查询集将如下所示:
Parent.objects.filter(children__isnull=True)

关于Django 查询空的related_set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35389895/

相关文章:

mysql - 简化 LEFT JOIN

sql - Left Join、Order by、MySQL优化

mysql - FROM 后面的第二个词在 MySQL 查询中是什么意思?

python - Django WSGI 没有名为 'site' 的模块

django - 使用已存储在数据库中的数据自动填充 ModelForm

django - 使用 Django ORM 自连接

mysql - LEFT JOIN 显示不在右表中的记录

python - 迁移后Django表不存在

django - 如何在项目中加载 django 应用程序模型而不由该项目负责迁移

mysql - LEFT JOIN - 从左表中获取所有数据,右表中没有匹配项