2016-01-27 1 views
2

У меня есть django ModelForm для создания/редактирования некоторых объектов.Django: инициализировать форму с несколькими экземплярами поля

У меня есть возможность в пользовательском интерфейсе, чтобы добавить новые дополнительные поля, как здесь: http://bootsnipp.com/snippets/featured/dynamic-form-fields-add-amp-remove-bs3

и я сбор данных из всех полея (основного и дополнительного) и сохранение в базу данных в виде списка:

, например:

у меня есть name поле ввода в ModelForm и несколько дополнительных name полей, добавленных в пользовательский интерфейс. Я посылаю запрос, как это:

name=test1&name=test2&name=test3 и так on..and сохранение в БД, как в:

name = ['test1', 'test2', 'test3']

Здесь все хорошо, но ...

Когда я хочу показать свою форму для редактирования существующего элемента, я действительно не знаю, как загрузить данные из этого списка name = ['test1', 'test2', 'test3'] в мой ModelForm + как сгенерировать эти дополнительные поля с данными.

0 Вы знаете об этом?

ответ

0

Я еще не сделал этого, но проект, над которым я сейчас работаю, потребует его в будущем, поэтому я рассмотрел несколько источников. Хотя this tutorial довольно старый, я думаю, что он содержит некоторые ключевые понятия, которые все еще применяются. В учебнике рассматривается учебник django о проведении опроса с несколькими вариантами. В приведенном ниже кодехе указывается, что должны быть три формы выбора, сделанные по второму вопросу опроса.

pform = PollForm(instance=Poll()) 
cforms = [ChoiceForm(prefix=str(x), instance=Choice()) for x in range(0,3)] 

Вы говорите, что хотите, чтобы ваша форма отображала существующий элемент для редактирования. Итак, здесь Choice() следует заменить экземпляром модели, так что для вас вы бы сделали что-то вроде instance = name1, где name1 = Name.objects.get (id = '1') или какой-либо другой запрос к получить экземпляр модели.

Автор учебника также делает отметку этой проблемы:.

«И с этим, теперь у вас есть представление, которое может добавить опрос и объекты 3 Выбор для него сразу

Making просмотр одного и того же объекта очень похож, вам просто нужно запросить объекты Poll и Choice и использовать их вместо пустых экземпляров. Вы также можете использовать идентификаторы выбора в качестве префиксов для экземпляров ChoiceForm. ModelForm заключается в том, что как только вы меняете аргумент arg из нового объекта в существующий, он становится формой редактирования вместо формы добавления, поэтому вам не нужно менять какие-либо внутренние элементы, чтобы перейти от добавления к редактированию ».

+0

Я не думаю, что это хорошая идея, потому что вы всегда создадите дублируемую форму (со всеми данными), когда мне нужно всего лишь одно поле – pivanchy