Django Forms - Как использовать параметр префикса

Скажем, у меня есть такая форма:

class GeneralForm(forms.Form): field1 = forms.IntegerField(required=False) field2 = forms. IntegerField(required=False) 

И я хочу 9X_html-head показывать его дважды на странице в одном 9X_html5 теге формы каждый раз с другим префиксом, например:

rest of page ... 
GeneralForm(data,prefix="form1").as_table() GeneralForm(data,prefix="form2").as_table()
 rest of page ... 

Когда 9X_webpage пользователь отправляет это, как мне вернуть 9X_html5 отправленную форму в две отдельные формы 9X_form для проверки и повторно отобразить ее?

This was the only documentation Я 9X_form нашел, и это отстойно.

23
0
2
Общее количество ответов: 2

Ответ #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/

39
0

Ответ #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 и сортировка элементов.

6
0