Задать вопрос

Deform. Возможен ли постпроцессинг формы внутри самой формы?

Есть ли в deform возможность прицепить фунцию обеспечивающую постпроцессинг формы.

form = get_form() # функция возвращающая экзепляр deform
  appstruct = form.validate(request.POST.items()) # валидируем и получаем данные



appstruct — это набор полученных данных. (если не прав поправьте меня пожалуйста). Желательно что бы к этим данным была вызвана фунция определенная ранее внутри формы form


для чего это мне…

есть два поля формы

поле1 «загрузка файла с диска»

поле2 «загрузка файла по урлу»


что бы в контрллере не писать условий (если загружен поле1 то делать то-то, если загружено поле2, то делать то-то) хотелось бы сделать эти действия в функции постпроцессинга формы, а в контроллере уже взять результат обработки.


директива preparer у SchemaNode не подойдет, потому, как она обрабатывает одно значение, у элемента к которому привязана. Нужно получить все значения формы, что бы оперировать всеми данными и возможно даже, добавить новое значение в схему.


надеюсь вопрос мой ясен.
  • Вопрос задан
  • 2543 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@gelas
Насколько я помню, схема от всей формы тоже ShemaNode, так что preparer должен получить весь appstruct
schema = Schema(preparer=my_preparer)
form = deform.Form(schema, buttons=('submit',))


так же можно переопределить deserialize у формы или написать свой widget в который будет обрабатывать оба способа загрузки файла и отдавать только одно значение
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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