【发布时间】:2011-07-07 20:32:31
【问题描述】:
我正在为企业解决方案开发面向用户的 django 应用程序。目前,用户可以将网站上的数据归类为仅对他们自己可见的私人收藏。一项功能请求是让经理能够查看其下属的私人收藏。
我的问题是,实现这种层次结构的最佳解决方案是什么?我想到了几个解决方案:
- 从用户到名为 manager 的用户的外键。创建一个@user_passes_test 测试,该测试通过从集合的所有者查看的经理关系递归,直到a)请求用户被发现是经理,或b)经理为空,表明请求用户无权访问此页面.
- 优点:用最少的数据准确地表示简单的层次结构
- 缺点:大的层次结构会导致很多查询
- 在用户和称为管理员的用户之间创建多对多关系。创建此表中的所有关系。
- 优点:只需一次查询,用户可以拥有多个管理员。
- 缺点:当有人离开时很难改变层次结构。
我也愿意接受人们提出的任何其他建议。
【问题讨论】:
-
您是否考虑过建立与 Treebeard 或 MPTT 的关系?
-
两个都不熟悉,我先研究一下。
-
@Elf:看起来 MPTT 是我想要的。如果您需要代表,请将其作为答案发布,我会接受。