Найти - Пользователи
Полная версия: Обработка нескольких форм разл. классов одним контроллером
Начало » Django » Обработка нескольких форм разл. классов одним контроллером
1 2
Alex.py
FishHook
Alex.pyУ вас вопрос еще остался? Я правда не понимаю ваших затруднений

Ага, остался) Здрасте.

Задал формсеты, в контроллере получаю ошибку:

“ManagementForm data is missing or has been tampered with”

И часто такая ошибка возникает, если в шаблоне нет инструкции в начале цикла рендеринга форм:

{{ formset.management_form }}

Этот атрибут “management_form” должен быть в моём случае? Я рендерю формы в шаблоне в цикле (я сейчас говорю о шаблоне откуда формы будут отправляться), перебирая каждую, и не создаю формсет, потому что формы разные и под каждый класс данных идёт свой класс формы. Все формы в зависимости от данных получаются на лету в цикле и передаются в контекст списком. Но в формах есть поля с начальным значением, заданным параметром initial. Эти поля рендерятся как as_hidden, но на валидацию это влиять не должно.

Django я так понял , при вызове is_valid() для каждого formset проверяет сколько форм указано в шаблоне и сколько пришло в querydict и если этого нет в шаблоне вообще, то вызывается исключение ValidationError.
FishHook
Я не знаю, не работал с формсетами, так как не понимаю, нафига они нужны. По мне, лучше явно задать логику написав чуть больше кода руками, чем гадать, что надо фреймворку со всей его магией.
Дам общий совет. Даже не совет, а так - мысли в слух. Джанга на 80% состоит из всяких устаревших на сегодняшний день штук. Джанга переносит вектор внимания на бекенд, это было хорошо, когда фронтенд был не такой продвинутый как сейчас. Но времена меняются, подходы меняются, и сейчас не нужны никакие формсеты и мозгодробильные тупые шаблоны. Можно построить чистую и простую архитектуру, когда ваши контроллеры занимаются ровно тем, чем должны - получают данные от слоя представления и соединяют их с бизнес логикой. Получены эти данные от формы, или от юнит-теста, или как-то еще - без разницы, ваш бэкенд вообще об этом думать не должен, забудьте про формы.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB