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