2

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

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

有没有更好的方法来做到这一点或做类似事情的插件?

4

1 回答 1

0

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

对于权限问题,您必须更详细地指定问题,但如果您使用的一种可能性treebeard是:

def can_view(entry, user):
    return entry.user.get_root() == user.get_root()
于 2015-12-01T01:48:39.913 回答