2012-04-16 101 views
0

我想限制其管理界面的部分将会显示给这名工作人员 - 例如,一个人可能只负责结算相关的项目,另一只为客户的支持,并第三个可能具有完全访问权限。非超级用户访问Django管理

我可以is_superuser设置为True提供完全访问权限,但我不认为我想要的(我不想与访问管理接口的所有工作人员是超级用户)。

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

我试过方法this question描述,但我得到了同样的“您没有权限”的结果:

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

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

回答

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将被解释为意味着当前用户不被许可删除此类型的任何对象)。

+0

不知道我从哪里得到has_edit_permission,has_change_permission有效。 – Parand 2012-04-16 23:15:24

2

对于你想要做什么,不会覆盖has_change_permission - 只是给除了用户(S)和/或用户组(S)的相应权限(“可以改变XS”)检查“是员工”。

+0

我试过了,没有工作,可能是因为我搞砸了细节。我会再试一次。 – Parand 2012-04-16 23:54:51