仅当没有孩子存在时,Django MPTT过滤器

时间:2017-10-06 00:04:11

标签: python django django-models django-mptt mptt

所以我在Django中使用MPTT作为分类模型,我想知道如果没有child,是否有办法过滤类别。

models.py:

class Category(MPTTModel, TimeStampedModel):
    title = models.CharField(max_length=75)
    parent = TreeForeignKey('self', null=True, blank=True, on_delete=models.SET_NULL, related_name='children', db_index=True)

DB中的类别示例:

Games > Nintendo > Nintendo 64
Games > Microsoft > Xbox One

我希望能够运行这样的命令:

Category.objects.all().has_no_children()

希望它会返回[Nintendo 64, Xbox One]

1 个答案:

答案 0 :(得分:3)

您正试图获得所谓的leaves。这应该可以帮到你:

Category.objects.filter(lft=F('rght')-1)