我正在寻找一种方法来自定义Django Administration以支持基于用户组的权限.
例如,我刚刚创建了Developers组,现在我也创建了Tickets模型,使用AdminModel指定如何列出数据.
我想让这个模型仅由开发人员看到,并且彼此隐藏而不是在这个组中(例如,根据组过滤视图).我已经阅读了很多文档,但无法真正找到并理解如何使其工作.
出于安全考虑,我还需要在添加 - 删除特定模型的对象(我已经隐藏到开发人员组以外的人员的对象)时在运行时检查用户组,否则它只需要知道要使用的URL楷模
它看起来像一个简单的任务,但也许我错过了一些东西......任何第三方中间件,或只是一种方法吗?如果需要,我也准备编辑管理视图,但我需要知道该怎么做.
谢谢 :-)
Chr*_*att 12
ModelAdmin有三种方法处理用户权限:has_add_permission,has_change_permission和has_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.