我在Django 1.11.13上有一个简单的项目,它使用普通的Django管理模块。员工用户在允许的情况下无法删除对象(has_delete_permission总是返回true)。
models.py:
class MyModel(models.Model):
name = models.IntegerField("Value", blank=True, null=True)
admin.py:
@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
def has_add_permission(self, request):
return True
def has_change_permission(self, request, obj=None):
return True
def has_delete_permission(self, request, obj=None):
return True
我创建了用户并登录。他可以创建MyModel对象(如预期的那样),可以编辑(按预期方式),但不能删除!!
如果我尝试删除它,那就是我所看到的:
删除所选的我的模型会导致删除相关内容 对象,但您的帐户无权删除 以下类型的对象:
my model
我做错了什么?我应该如何授予普通员工用户删除MyModel的权限?
答案 0 :(得分:0)
还有一个用户has_perm
正在进行检查,该检查将返回False,因为未按正常方式处理权限。您可以在它周围使用MonkeyType,在我的情况下,可以检查用户是否是职员并且处于活动状态,但是您始终可以return True
def override_user_has_perm(self, *args):
return self.is_staff and self.is_active
User.add_to_class('has_perm', override_user_has_perm)