簡體   English   中英

Django:復雜權限模型

[英]Django: Complex Permission Model

假設我有用戶,項目,成員身份,並且在每個成員身份中都指定了一個角色(例如:admin,只讀,用戶等)。 成員資格定義用戶與項目之間的關系以及相應的角色。

現在,我遇到一個問題:如何使用Django的權限系統來確保只有管理員才能編輯項目,而其他角色則不允許編輯項目?

項目列表模板應如下所示:

{% for project in object_list %}
    {# user.has_perm('edit_project', project) #}
{% endfor %}

最好的方法是什么? 如何根據成員角色實現權限?

您需要構建自己的權限系統。

Django的內置權限系統不適合您要執行的操作。

Project建立模型。 through Membership模型在UserProject之間創建ManyToMany關系。 該成員資格模型將具有一個role字段。

https://docs.djangoproject.com/en/1.10/topics/db/models/#extra-fields-on-many-to-many-relationships的示例幾乎非常適合您的需求。

您不能在模板中執行user.has_perm('edit_project', project) Django模板不允許直接使用多個參數進行函數調用。 我認為,在您的情況下,采用User實例, Project實例以及描述所需權限的字符串的自定義模板標記將是解決之道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM