gpt4 book ai didi

python - django admin - 编辑或查看模型的组权限

转载 作者:太空狗 更新时间:2023-10-29 20:50:29 26 4
gpt4 key购买 nike

我正在寻找一种方法来自定义 Django 管理以支持基于用户组的权限。

例如,我刚刚创建了 Developers 组,现在我还创建了 Tickets 模型,使用 AdminModel 来指定如何列出数据。

我想让这个模型只对开发人员可见,并且对不在这个组中的彼此隐藏(例如,根据组过滤 View )。我已经阅读了很多文档,但无法真正找到并理解如何让它工作。

为了安全起见,我还需要在运行时检查用户组,以便为​​特定模型(我已经对开发人员组以外的人隐藏的对象)添加或删除对象,否则它只需要知道 URL使用模型 :s

这看起来像是一项简单的任务,但也许我遗漏了一些东西……任何第 3 方中间件,或者只是一种实现方式?如果需要,我也准备好编辑管理 View ,但我需要知道要做什么。

谢谢 :-)

最佳答案

ModelAdmin 有三种处理用户权限的方法:has_add_permissionhas_change_permissionhas_delete_permission。这三个都应返回 bool 值 (True/False)。

所以你可以这样做:

class TicketAdmin(admin.ModelAdmin):
...
def has_add_permission(self, request):
return request.user.groups.filter(name='Developers').exists()

def has_change_permission(self, request, obj=None):
return request.user.groups.filter(name='Developers').exists()

def has_delete_permission(self, request, obj=None):
return request.user.groups.filter(name='Developers').exists()

当其中之一返回 False 时,会导致 403 Forbidden。

关于python - django admin - 编辑或查看模型的组权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8392780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com