[英]Django: Complex Permission Model
假設我有用戶,項目,成員身份,並且在每個成員身份中都指定了一個角色(例如:admin,只讀,用戶等)。 成員資格定義用戶與項目之間的關系以及相應的角色。
現在,我遇到一個問題:如何使用Django的權限系統來確保只有管理員才能編輯項目,而其他角色則不允許編輯項目?
項目列表模板應如下所示:
{% for project in object_list %}
{# user.has_perm('edit_project', project) #}
{% endfor %}
最好的方法是什么? 如何根據成員角色實現權限?
您需要構建自己的權限系統。
Django的內置權限系統不適合您要執行的操作。
為Project
建立模型。 through
Membership
模型在User
和Project
之間創建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.