【问题标题】:django admin - group permissions to edit or view modelsdjango admin - 编辑或查看模型的组权限
【发布时间】:2011-12-05 22:27:30
【问题描述】:

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

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

我想让这个模型只对开发者可见,并且不在这个组中相互隐藏(例如,根据组过滤视图)。 我已经阅读了很多文档,但无法真正找到并理解如何让它发挥作用。

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

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

谢谢你:-)

【问题讨论】:

    标签: python django


    【解决方案1】:

    ModelAdmin 具有三种处理用户权限的方法:has_add_permissionhas_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()
    

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

    【讨论】:

    • 酷!不知道有一个简单的管理挂钩来处理自定义权限!
    • 哇!这似乎很容易执行:-) 类似的问题没有得到如此易于理解的解决方案。非常感谢!!
    • 我应该添加到(相当好的响应)添加
    【解决方案2】:

    我已经尝试了几个小时来找到一种通过单击屏幕来编辑自定义管理员(基于我的自定义模型)权限的方法,而无需编写太多代码。

    使用 Django 的 /admin/auth/user/ "用户权限:部分"

    最后我找到了这个: 只是为了安装django-admin-view-permission

    我可以在这里更改员工自定义模型的权限

    另外在群组部分 /admin/auth/group/add/ 我可以创建一个有一定权限的群组,并将特定人员分配到他们的权限群组。

    【讨论】:

      猜你喜欢
      • 2018-03-04
      • 2013-05-15
      • 2021-02-22
      • 2014-02-22
      • 1970-01-01
      • 2019-09-15
      • 2020-02-07
      • 2015-05-12
      • 1970-01-01
      相关资源
      最近更新 更多