非超级用户访问Django Admin

时间:2012-04-16 22:55:10

标签: django django-admin

我想限制管理界面的哪些部分可以访问哪些工作人员 - 例如,一个人可能只负责与计费相关的项目,另一个人只负责客户支持,第三个人可能具有完全访问权限。

我可以通过将is_superuser设置为True来提供完全访问权限,但我认为我不希望这样(我不希望所有可以访问Admin界面的人员都是超级用户)。

我可以通过将is_staff设置为True来允许工作人员登录管理界面,但是一旦登录,工作人员就无法访问任何内容 - 他们会看到“您无权编辑任何内容”。

我尝试了this question中描述的方法,但我得到了相同的“你没有权限”结果:

class MyAdmin(admin.ModelAdmin):
    def has_edit_permission(self, request):
        return True

有没有办法让工作人员能够访问Django管理界面的一部分而不是超级用户?

2 个答案:

答案 0 :(得分:3)

没有has_edit_permission之类的东西。它是has_change_permission

有关三种权限方法的详细信息,请参阅Django ModelAdmin docs

  

<强> ModelAdmin.has_add_permission(self, request)

     
    

如果允许添加对象,则应返回True,否则为False

  
     

<强> ModelAdmin.has_change_permission(self, request, obj=None)

     
    

如果允许编辑True,则应返回obj,否则返回False。如果objNone,则应返回TrueFalse以指示是否允许编辑此类对象(例如,False将被解释这意味着当前用户不允许编辑此类型的任何对象。)

  
     

<强> ModelAdmin.has_delete_permission(self, request, obj=None)

     
    

如果允许删除True,则应返回obj,否则返回False。如果objNone,则应返回TrueFalse以指示是否一般允许删除此类型的对象(例如,False将被解释为意味着不允许当前用户删除此类型的任何对象。)

  

答案 1 :(得分:2)

对于你想要做的事情,不要覆盖has_change_permission - 除了检查“is staff”之外,只需给予用户和/或用户组相应的权限(“可以更改X”)