В классе ModelAdmin
есть ряд хуков, которые позволяют вам делать это следующим образом - посмотрите на код в django.contrib.admin.options
.
Вам могут помочь два метода: ModelAdmin.save_form
и ModelAdmin.save_model
, оба из которых передаются объекту запроса. Таким образом, вы можете переопределить эти методы в своем подклассе Admin и выполнить любую дополнительную обработку, которая вам нужна.
Отредактировано после комментария
Вы совершенно правы, что это не позволит вам проверять форму в зависимости от привилегий пользователя. К сожалению, создание формы похоронено глубоко внутри add_view
и change_view
методов ModelAdmin
.
Существует не так много возможностей без дублирования большого количества существующего кода. Вы можете переопределить методы *_view
; или вы можете попробовать переопределить функцию modelform_factory
, чтобы вернуть новый класс с уже запрошенным объектом запроса; или вы можете попробовать поиграться с методом класса __new__
, чтобы сделать то же самое, но это сложно из-за метакласса формы.