Django模型 - 在表格中获得与自我关系的后代

时间:2014-01-14 22:36:04

标签: python django django-models django-queryset

鉴于以下模型:

class Item(models.Model):
    name = models.CharField(max_length = 45)
    belongsTo = models.ManyToManyField("self", symmetrical=False, related_name='parentOf')

    def get_descendants(self):
        "Returns items descendants"
        pass

我如何实现get_descendants函数以获得与n后代类似的内容:

Item.objects.filter(belongs_to=item).filter(belongs_to__belongs_to=item).filter(...) 

1 个答案:

答案 0 :(得分:2)

你可能想要研究Django-MPTT:http://django-mptt.github.io/django-mptt/overview.html,特别是它的模型方法:http://django-mptt.github.io/django-mptt/models.html#mpttmodel-instance-methods

它提供了操作这种关系所需的一切,我在一些涉及与您类似的模型的项目中使用它,并且使用起来非常简单。

如果您不想使用任何第三方应用程序,那么返回对象查询集的循环似乎是解决此问题的方法。