У меня возникла проблема с формами django. В настоящее время я использую request.POST для проверки POST в представлениях. Я хочу немного отделить вещи, переместив весь процесс на формы.Django формы. Поля с тем же атрибутом имени html
Что я буду делать:
Пользователь предоставлен с 5 текстами ввода. И он может добавить до 30 текстов, используя javascript. Каждый входной текст имеет атрибут name = 'choice []'. Поэтому, когда я получаю запрос. POST dict, я просто делаю:
choices = request.POST.getlist('choices[]')
и я получаю все возможности пользователя.
Как это можно реализовать с формами django?
Например, следующая форма:
class MyForm(forms.Form):
# Form fields
title = forms.CharField()
choice1 = forms.CharField()
choice2 = forms.CharField()
option = forms.ChoiceField(choices=(...))
будет производить что-то подобное в HTML:
<input name="title" type="text" />
<input name="choice1" type="text" />
<input name="choice2" type="text" />
<select name="option">
<option .... />
....
</select>
можно ли сделать его производить следующее без вручную жестко прописывать его в HTML файл сам ?:
<input name="title" type="text" />
<input name="choices[]" type="text" />
<input name="choices[]" type="text" />
<select name="option">
<option .... />
....
</select>
, и если да, то как я могу обработать проверку после этого?
Спасибо
P.S Я прочитал документацию о Джанго FormSets, но речь идет о создании нескольких форм, а не 1 форму, так что я не думаю, что это будет никакой пользы.
Снова прочитайте документы 'formet'. Это то, что вам нужно. 'Formset' - это набор' forms', это не только одна 'форма '. – Todor
Uhm ok Я избегал упоминать, что вся форма состоит из большего количества элементов, а не только выбора. Если я предоставил дополнительный = 3, он предоставит 3 дополнительные формы, тогда как я хочу только 3 дополнительных поля выбора. Я что-то упускаю? Также это решение проблемы с именем? – tchar
Вы можете разделить проблему на части и решить их один за другим (делить и побеждать), проверить мой ответ. – Todor