Django: запрос Доступа возражает от form.clean администратора ()

Мой вопрос очень похож на этого: Как я получаю доступ к объекту запроса или какой-либо другой переменной в чистой форме () метод?

Кроме, у меня есть та же проблема с администраторской формой. Таким образом, я не вижу путь к init форма сам, поэтому - для передачи запроса ему.

Спасибо заранее.

13
задан Community 23 May 2017 в 11:45
поделиться

1 ответ

В классе ModelAdmin есть несколько хуков, позволяющих вам делать такие вещи - посмотрите код в django.contrib.admin.options.

Два метода, которые могут вам помочь, это ModelAdmin.save_form и ModelAdmin.save_model, оба они передают объект запроса. Таким образом, вы можете переопределить эти методы в своем подклассе Admin и сделать любую дополнительную обработку, которая вам нужна.

Отредактировано после комментария

Вы совершенно правы, что это не позволит вам проверить форму в зависимости от привилегий пользователя. К сожалению, инстанцирование формы зарыто глубоко внутри методов add_view и change_view в ModelAdmin.

Существует не так много возможностей без дублирования большого количества существующего кода. Можно переопределить методы *_view; можно попытаться переопределить функцию modelform_factory, чтобы вернуть новый класс с уже записанным объектом запроса; можно попробовать поработать с методом класса формы __new__, чтобы сделать то же самое, но это сложно из-за метакласса формы.

0
ответ дан 1 December 2019 в 18:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: