Django Forms - Как использовать параметр префикса
Скажем, у меня есть такая форма:
class GeneralForm(forms.Form): field1 = forms.IntegerField(required=False) field2 = forms. IntegerField(required=False)
И я хочу 9X_html-head показывать его дважды на странице в одном 9X_html5 теге формы каждый раз с другим префиксом, например:
rest of page ...
rest of page ...
Когда 9X_webpage пользователь отправляет это, как мне вернуть 9X_html5 отправленную форму в две отдельные формы 9X_form для проверки и повторно отобразить ее?
This was the only documentation Я 9X_form нашел, и это отстойно.
Ответ #1
Ответ на вопрос: Django Forms - Как использовать параметр префикса
Вы обрабатываете каждую форму как обычно, обеспечивая 9X_divs создание экземпляров с теми же префиксами, что 9X_python и те, которые использовались для первоначального 9X_pythonic создания формы.
Вот немного неудобный пример 9X_python-interpreter использования предоставленной вами формы, поскольку 9X_divs я не знаю, каков точный вариант использования:
def some_view(request): if request.method == 'POST': form1 = GeneralForm(request.POST, prefix='form1') form2 = GeneralForm(request.POST, prefix='form2') if all([form1.is_valid(), form2.is_valid()]): pass # Do stuff with the forms else: form1 = GeneralForm(prefix='form1') form2 = GeneralForm(prefix='form2') return render_to_response('some_template.html', { 'form1': form1, 'form2': form2, })
Вот 9X_pythonista пример реального кода, демонстрирующего 9X_python обработку форм с использованием префикса:
http://collingrady.wordpress.com/2008/02/18/editing-multiple-objects-in-django-with-newforms/
Ответ #2
Ответ на вопрос: Django Forms - Как использовать параметр префикса
Более того, я думаю, что formsets - это именно то, что 9X_python вам нужно.
class GeneralForm(forms.Form): field1 = forms.IntegerField(required=False) field2 = forms. IntegerField(required=False) from django.forms.formsets import formset_factory # GeneralSet is a formset with 2 occurrences of GeneralForm # ( as a formset allows the user to add new items, this enforces # 2 fixed items, no less, no more ) GeneralSet = formset_factory(GeneralForm, extra=2, max_num=2) # example view def someview(request): general_set = GeneralSet(request.POST) if general_set.is_valid(): for form in general_set.forms: # do something with data return render_to_response("template.html", {'form': general_set}, RequestContext(request))
Вы даже можете автоматически сгенерировать 9X_pythonic набор форм из модели с помощью modelformset_factory, которые 9X_div используются автоматическим администратором 9X_divs django. FormSet обрабатывает даже больше, чем 9X_html-form простые формы, такие как добавление, удаление 9X_python-interpreter и сортировка элементов.
-
4
-
4
-
1
-
4
-
3
-
7
-
6
-
3
-
1
-
6
-
5
-
10
-
7
-
4
-
4
-
9
-
4
-
2
-
7
-
3
-
2
-
3
-
5
-
5
-
3
-
2
-
5
-
4
-
2
-
3
-
6
-
7
-
4
-
3
-
1
-
2
-
3
-
3
-
2
-
2
-
4
-
3
-
1
-
1
-
3
-
1
-
2
-
2
-
2
-
3