Беспокойство о формах волшебников в Django: AJAX, условные выражения - PullRequest
0 голосов
/ 07 декабря 2011

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

Например, предположим, что форма помогает пользователям подавать налоговые декларации штата. На первой странице у меня может быть поле выбора, где пользователи выбирают штат (Алабама, Арканзас, Аляска ...). В зависимости от того, какой штат выбран, на следующей странице будут заданы совершенно разные вопросы, поскольку налоги в разных штатах очень разные.

Это похоже на то, что волшебники должны быть хороши, но я никогда раньше не делал волшебника джанго, и у меня есть некоторые опасения.

Во-первых, работают ли мастера форм с AJAX? В частности, я хотел бы загрузить и визуализировать форму (и все ее шаги) в объекте вкладок jquery. По завершении каждого шага следующая страница формы будет загружаться динамически, без перезагрузки всей страницы.

Во-вторых, AFAICS, шаблоны условного просмотра / пропуска в мастере форм django работают только с логическими значениями. Одна ключевая часть моего потока форм - это долгосрочный выбор select: выбор состояния. Волшебники форм не выглядят так, как будто они могут изящно справляться с подобным образцом. Есть хороший обходной путь или альтернатива?

В общем, являются ли мастера форм правильным способом реализации такой структуры? Использование одного только jquery кажется неудобным, поскольку мне (предположительно) пришлось бы сначала загрузить все 50 форм, зависящих от состояния, вместе.

Ответы [ 2 ]

1 голос
/ 13 декабря 2011

В конце концов, ответы на мои вопросы были «Нет» и «Нет». Стандартные formWizards просто не выполняют AJAX и сложные условные выражения изящно, поэтому я закончил тем, что написал свой собственный набор классов для этого.

1 голос
/ 07 декабря 2011

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

разбивает формы на несколько веб-страниц. Он поддерживает состояние в одном из бэкэнды, так что полная обработка на стороне сервера может быть отложена до подачи окончательной формы.

Я бы хотел сделать несколько форм и изначально заставить их работать без слишком большого количества javascript (хорошо; вы можете, если хотите, загружать состояния с помощью некоторого API автозаполнения). Затем вы можете попробовать, например, pjax .

...