Изменение значения поля в форме Django перед отправкой на повторный рендеринг

Основной текст заметки

После валидации формы, при обнаружении ошибок, иногда возникает необходимость поменять значение поля (например дозаполнить пустое поле). Для этого нужно поменять значение в поле data формы. Но просто так это не сделать, потому что для него стоит флаг _mutable. Флаг приходится предварительно сбросить, а потом восстановить

class MyView(FormView):
    ....
    def form_invalid(self, form):
        _mutable = form.data._mutable
        form.data._mutable = True
        form.data["info"] = 'новое значение поля'
        form.data._mutable = _mutable
        return super().form_invalid(form)

Заметка написана: 04.06.2020

Теги заметки: Django