Как назначить права доступа 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
Вернуться на верх