繁体   English   中英

如何在Django中创建一个分层组织(像树一样)?

[英]How to create a hierarchical organization (tree like) in django?

我必须在Django中创建一个组织结构(像树一样)。 当前,我正在使用auth_user具有parent_id的一对一映射表,但是当组织级别更高时,我必须在同一表上触发多个查询以获取顶级节点的子代。

另外,我需要基于此允许对多个视图的权限。 例如。 用户可以有权查看自己在特定表中的条目以及由其团队添加的条目。 对于权限,我目前正在获取所有用户的列表,并检查其中一个用户是否与添加该条目的用户相同,并检查该用户的权限(在视图之前的装饰器中)。 我认为如果可以重写has_perm方法来执行相同操作会更好。

有没有更好的方法或类似的插件?

您可以使用几种已知方法之一解决组织结构的父/祖先查询问题(例如,请参阅此问题以获取详细信息)。 对于特定于Django的问题,有一个相当活跃的项目叫做treebeard ,它提供了邻接表,物化路径和嵌套集。

对于权限问题,您必须更详细地说明问题,但是如果您使用treebeard则一种可能是:

def can_view(entry, user):
    return entry.user.get_root() == user.get_root()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM