Как назначить права доступа django для создателей объектов?
можно ли разрешить редактирование на сайте django admin объектов в базе данных только создателям этих объектов? Необходимо ли для этого расширение django-guardian? Как я понял с django guardian мне нужно вручную назначать права для каждого объекта базы данных и это кажется не эффективным
Я пытался использовать django-guardian для этого случая, но документация по нему не очень понятна для меня, и я не уверен, что это расширение решит эту проблему
Вы можете переопределить has_change_permission
, has_delete_permission
и т.д. в классе администратора вашей модели. https://docs.djangoproject.com/en/4.2/ref/contrib/admin/
Вам также придется самостоятельно устанавливать создателя объекта при сохранении.
Это может выглядеть примерно так:
class ObjectAdmin(admin.ModelAdmin):
# ...
def save_model(self, request, obj, form, change):
obj.creator = request.user
super().save_model(request, obj, form, change)
def has_change_permission(self, request, obj=None):
if request.user.is_superuser:
return True
return request.user == obj.creator