在Django中获取链中的相关父对象

时间:2013-11-18 14:58:57

标签: django foreign-keys models relation

一如既往,请原谅我的无知。我保证先搜索一下。

我已将我的Django视图放在一起为我的员工课程。其中一个属性是report_to字段。该字段由FK填充给另一个用户obj。

我现在的任务是构建一个命令树。因此,我需要一份A报告清单,向B报告报告到D一直到链。

起初我认为这最终会成为一个循环的猎人,但必须有一个更好的解决方案。

prefetch_related可能吗?或者select_related?

如何获取此关系以获取所有关系,直到它达到ceo并且reports_to为空?

1 个答案:

答案 0 :(得分:2)

你所拥有的是一个树形结构,首席执行官位于顶层。这些通常不容易在数据库中表示。幸运的是,有一个很好的算法可以为你,MPTT和django-mptt中的一个很棒的Django实现。它将涉及对您的数据进行一些更改,但使用它可以让您一次性获得员工的所有祖先 - 或所有后代。