如何使用django orm与他们的孩子一起获取所有对象?

时间:2010-05-05 07:30:19

标签: django django-models tree

我有一个非常简单的层次结构:每个对象可以有0或1个父对象。每个物体可以拥有多少个孩子,没有限制。

所以在我的应用程序中我得到了这样一个模型:

class O(Model):
  name = CharField(max_length = 20)
  parent = ForeignKey('O', related_name = 'children')

现在我希望能够获取在其父树中具有特定一个Object1的所有对象(如在其父级的父级或父级中等)。

我应该使用mptt还是有更简单的方法?

2 个答案:

答案 0 :(得分:0)

是的,我建议使用mppt。我喜欢它。

有许多有用的函数,如instance.get_ancestors()或instance.get_children()。 以及许多优秀且有用的模板标签。

答案 1 :(得分:0)

如果你选择mptt我建议先阅读docs。这是一个很好的实现,在这种情况下它将是最简单的。

您正在寻找的是mptt中的get_descendants()。

小心并使用svn trunk,因为最后一个版本与Django 1.0及以后版本不兼容。希望这会有所帮助。