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

时间:2016-11-22 13:37:27

标签: python django self-reference

我有以下django模型:

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

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

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

1 个答案:

答案 0 :(得分:6)

您可以将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)

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

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