不可见的,我为了每个对象的权限管理使用django-guardian分配权限。对象与Django的监护人管理
对于一个给定用户本人允许的所有权限一个对象:
joe = User.objects.get(username="joe")
mytask = Task.objects.get(pk=1)
assign('add_task', joe, mytask)
assign('change_task', joe, mytask)
assign('delete_task', joe, mytask)
,我得到的,如预期:
In [57]: joe.has_perm("add_task", mytask)
Out[57]: True
In [58]: joe.has_perm("change_task", mytask)
Out[58]: True
In [59]: joe.has_perm("delete_task", mytask)
Out[59]: True
在admin.py我也会让TaskAdmin从GuardedModelAdmin
而不是继承admin.ModelAdmin
现在,当我连接到我的网站与乔,在管理员我得到:
You don't have permission to edit anything
我不是应该能够编辑对象mytask?
我必须使用内置的基于模型的权限系统设置一些权限?
我错过了什么?
编辑
我尝试添加选项user_can_access_owned_objects_only
,这是为了对付我的问题,但我仍然看不到任何东西在我的管理...
class TaskAdmin(GuardedModelAdmin):
user_can_access_owned_objects_only = True
pass
admin.site.register(Task, TaskAdmin)
谢谢你
你应该通过在self.has_view_permission – Don
@Don是的“请求”,而不是“request.user”,感谢指出=) – okm
可能是版本变化相关的问题,但运行到'选项'对象没有属性'get_change_permission' – Mutant