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

Fra*_*ine 6 python django self-reference

我有以下django模型:

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

请注意,该字段parent是自引用的,即类别可以具有父级.

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

sch*_*ggl 8

你可以用isnullrelated_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)
Run Code Online (Sandbox Code Playgroud)

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

Category.objects.filter(category__isnull=True)  # not so informative
Run Code Online (Sandbox Code Playgroud)