我想限制管理界面的哪些部分可以访问哪些工作人员 - 例如,一个人可能只负责与计费相关的项目,另一个人只负责客户支持,第三个人可能具有完全访问权限。
我可以通过将is_superuser设置为True来提供完全访问权限,但我认为我不希望这样(我不希望所有可以访问Admin界面的人员都是超级用户)。
我可以通过将is_staff设置为True来允许工作人员登录管理界面,但是一旦登录,工作人员就无法访问任何内容 - 他们会看到“您无权编辑任何内容”。
我尝试了this question中描述的方法,但我得到了相同的“你没有权限”结果:
class MyAdmin(admin.ModelAdmin):
def has_edit_permission(self, request):
return True
有没有办法让工作人员能够访问Django管理界面的一部分而不是超级用户?
答案 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
。如果obj
为None
,则应返回True
或False
以指示是否允许编辑此类对象(例如,False
将被解释这意味着当前用户不允许编辑此类型的任何对象。)<强>
ModelAdmin.has_delete_permission(self, request, obj=None)
强>如果允许删除
True
,则应返回obj
,否则返回False
。如果obj
为None
,则应返回True
或False
以指示是否一般允许删除此类型的对象(例如,False
将被解释为意味着不允许当前用户删除此类型的任何对象。)
答案 1 :(得分:2)
对于你想要做的事情,不要覆盖has_change_permission - 除了检查“is staff”之外,只需给予用户和/或用户组相应的权限(“可以更改X”)