Django:查询没有子元素的自引用对象

Django: Query self referencing objects with no child elements

我有以下 django 模型:

class Category(models.Model):
    name = models.CharField(maxlength=20)
    parent = models.ForeignKey('self', null=True)

请注意,字段 parent 是自引用的,即类别可以有父类别。

如何找到没有子类别的所有 Category 个对象?

您可以使用 isnull with the related_query_name:

class Category(models.Model):
    # ...
    parent = models.ForeignKey('self', null=True, related_name='children', related_query_name='child')

Category.objects.filter(child__isnull=True)

在这里,我建议至少指定一个有意义的related_name! 如果您仅指定 related_name,则 related_query_name 默认为该名称(此处:children)。如果指定两者中的none,则rqn默认为型号名称:categorynot category_set

Category.objects.filter(category__isnull=True)  # not so informative