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

Ale*_*e A 8 python django

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

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

我想让这个模型仅由开发人员看到,并且彼此隐藏而不是在这个组中(例如,根据组过滤视图).我已经阅读了很多文档,但无法真正找到并理解如何使其工作.

出于安全考虑,我还需要在添加 - 删除特定模型的对象(我已经隐藏到开发人员组以外的人员的对象)时在运行时检查用户组,否则它只需要知道要使用的URL楷模

它看起来像一个简单的任务,但也许我错过了一些东西......任何第三方中间件,或只是一种方法吗?如果需要,我也准备编辑管理视图,但我需要知道该怎么做.

谢谢 :-)

Chr*_*att 12

ModelAdmin有三种方法处理用户权限:has_add_permission,has_change_permissionhas_delete_permission.这三个都应该返回布尔值(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()
Run Code Online (Sandbox Code Playgroud)

False从其中一个返回时,它会导致403 Forbidden.