不可見的,我爲了每個對象的權限管理使用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