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默认为型号名称:category
、not category_set
Category.objects.filter(category__isnull=True) # not so informative
我有以下 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默认为型号名称:category
、not category_set
Category.objects.filter(category__isnull=True) # not so informative