Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Обработка нескольких форм разл. классов одним контроллером [RSS Feed]

#1 Янв. 17, 2021 21:42:20

Alex.py
Зарегистрирован: 2020-09-20
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка нескольких форм разл. классов одним контроллером

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.

Отредактировано Alex.py (Янв. 18, 2021 01:44:58)

Офлайн

#2 Янв. 18, 2021 11:59:36

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8006
Репутация: +  558  -
Профиль   Отправить e-mail  

Обработка нескольких форм разл. классов одним контроллером

Я не знаю, не работал с формсетами, так как не понимаю, нафига они нужны. По мне, лучше явно задать логику написав чуть больше кода руками, чем гадать, что надо фреймворку со всей его магией.
Дам общий совет. Даже не совет, а так - мысли в слух. Джанга на 80% состоит из всяких устаревших на сегодняшний день штук. Джанга переносит вектор внимания на бекенд, это было хорошо, когда фронтенд был не такой продвинутый как сейчас. Но времена меняются, подходы меняются, и сейчас не нужны никакие формсеты и мозгодробильные тупые шаблоны. Можно построить чистую и простую архитектуру, когда ваши контроллеры занимаются ровно тем, чем должны - получают данные от слоя представления и соединяют их с бизнес логикой. Получены эти данные от формы, или от юнит-теста, или как-то еще - без разницы, ваш бэкенд вообще об этом думать не должен, забудьте про формы.



Офлайн

  • Начало
  • » Django
  • » Обработка нескольких форм разл. классов одним контроллером[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version