0

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

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

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

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

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

有没有办法让员工无需成为超级用户就可以访问 Django 管理界面的某些部分?

4

2 回答 2

6

没有这样的事情has_edit_permission。是has_change_permission

有关这三种权限方法的更多信息,请参阅Django ModelAdmin 文档

ModelAdmin.has_add_permission(self, request)

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

ModelAdmin.has_change_permission(self, request, obj=None)

如果允许True编辑,则应返回,否则。如果是,应该返回或指示是否允许编辑这种类型的对象(例如,将被解释为意味着不允许当前用户编辑任何这种类型的对象)。objFalseobjNoneTrueFalseFalse

ModelAdmin.has_delete_permission(self, request, obj=None)

如果允许True删除,则应返回,否则。如果是,应该返回或指示是否允许删除这种类型的对象(例如,将被解释为意味着不允许当前用户删除这种类型的任何对象)。objFalseobjNoneTrueFalseFalse

于 2012-04-16T23:05:02.843 回答
2

对于您想要做的事情,不要覆盖 has_change_permission - 除了检查“是员工”之外,只需给用户和/或用户组相应的权限(“可以更改 Xs”)。

于 2012-04-16T23:43:04.437 回答