Я использую django-guardianдля управления разрешениями на каждый объект.
Для данного пользователя я даю разрешение на все разрешения на один объект:
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?
Нужно ли устанавливать некоторые разрешения с помощью встроенной системы разрешений на основе модели?
Мне чего-то не хватает?
EDIT
Я попытался добавить опцию user_can_access_owned_objects_only
, которая должна заниматься моим вопросом,но я до сих пор ничего не вижу в своем админе...
class TaskAdmin(GuardedModelAdmin):
user_can_access_owned_objects_only = True
pass
admin.site.register(Task, TaskAdmin)
Спасибо