2009-09-29 2 views
0

У меня сложная форма, содержащая встроенный набор форм, который в основном имеет некоторые текстовые поля и поле для загрузки файлов. Теперь я хочу, чтобы пользователь мог создать новую запись, и на этом же шаге присоедините несколько файлов.Как построить гибкие встроенные формы?

Я думаю, что существуют различные варианты для достижения этой цели, может быть, я мог бы написать JQuery-плагин, который клонирует formset, делать все проверки и вставки вещи вручную в окне и т.д.

Главное, прежде чем начать is: Интересно, нет ли там какого-либо решения, которое заботится о проблеме - на мой взгляд, это очень распространенная проблема.

Возможно, есть какой-то подход решения, которого я не заметил?

+0

См. Этот вопрос и ответ: http://stackoverflow.com/questions/501719/dynamically-adding-a-form-to-a-django-formset-with-ajax –

+0

Кроме того, чтобы ответить на вашу озабоченность по поводу серверной части функциональность, связанный с этим вопрос/ответ использует методы Django для форм запаса, которые могут быть не гламурными, но они выполняют свою работу. –

+0

Спасибо за ваш ответ, у меня уже есть самозаписывающийся jQuery-плагин, который клонирует dom-узлы и обновляет идентификаторы внутри него. На самом деле моя проблема связана с обработкой полей на стороне сервера: например, если пользователи отправляют недопустимую форму, все файлы, загруженные в поле, должны быть временно сохранены и возвращены в форму. Конечно, я могу сделать это вручную, на мой взгляд, но я спрашиваю себя, невозможно ли сделать какую-то общую функцию, чтобы я мог его повторно использовать, и я ищу наилучший способ начать. – schneck

ответ

0

Если вы в основном просто хотите добавить «Добавить другую» или + ссылку, которая добавит новый раздел в вашу форму, хороший подход - написать немой раздел в простом HTML, затем скрыть его с помощью css и использовать cloneNode (true), чтобы сделать копия. Пока вы не используете идентификаторы, вы должны иметь возможность генерировать много копий с очень маленьким кодом JS.

+0

Да, это было бы возможно, но это только клиентская сторона. Должен ли я реализовать всю часть серверной части самостоятельно или есть какая-либо существующая функциональность, которую я мог бы использовать? – schneck

Смежные вопросы