鉴于以下模型:
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(...)
答案 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
它提供了操作这种关系所需的一切,我在一些涉及与您类似的模型的项目中使用它,并且使用起来非常简单。
如果您不想使用任何第三方应用程序,那么返回对象查询集的循环似乎是解决此问题的方法。