簡體   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