Поиск…


Синтаксис

  • NewFormSet = formset_factory (SomeForm, extra = 2)
  • formet = NewFormSet (initial = [{'some_field': 'Field Value', 'other_field': 'Other Field Value',}])

Формы с инициализированными и унифицированными данными

Formset - способ отображения нескольких форм на одной странице, например, сетки данных. Пример: этот ChoiceForm может быть связан с некоторым вопросом рода. как, дети самые умные, между которыми возраст ?.

appname/forms.py

from django import forms
class ChoiceForm(forms.Form):
    choice = forms.CharField()
    pub_date = forms.DateField()

В ваших представлениях вы можете использовать конструктор formset_factory который принимает Form в качестве параметра ChoiceForm в этом случае и extra который описывает, сколько дополнительных форм, кроме инициализированных форм / форм, нужно визуализировать, и вы можете formset объект formset же, как любой другой итерируемый.

Если формат не инициализирован данными, он печатает число форм, равное extra + 1 и если инициализируется набор форм, он печатает initialized + extra где extra количество пустых форм, отличных от инициализированных.

appname/views.py

import datetime
from django.forms import formset_factory
from appname.forms import ChoiceForm
    ChoiceFormSet = formset_factory(ChoiceForm, extra=2)
    formset = ChoiceFormSet(initial=[
      {'choice': 'Between 5-15 ?',
        'pub_date': datetime.date.today(),}
      ])

если вы formset object подобный этому для формы в formet: print (form.as_table ())

Output in rendered template

<tr>
<th><label for="id_form-0-choice">Choice:</label></th>
<td><input type="text" name="form-0-choice" value="Between 5-15 ?" id="id_form-0-choice" /></td>
</tr>
<tr>
<th><label for="id_form-0-pub_date">Pub date:</label></th>
<td><input type="text" name="form-0-pub_date" value="2008-05-12" id="id_form-0-pub_date" /></td>
</tr>
<tr>
<th><label for="id_form-1-choice">Choice:</label></th>
<td><input type="text" name="form-1-choice" id="id_form-1-choice" /></td>
</tr>
<tr>
<th><label for="id_form-1-pub_date">Pub date:</label></th>
<td><input type="text" name="form-1-pub_date" id="id_form-1-pub_date" /></td
</tr>
<tr>
<th><label for="id_form-2-choice">Choice:</label></th>
<td><input type="text" name="form-2-choice" id="id_form-2-choice" /></td>
</tr>
<tr>
<th><label for="id_form-2-pub_date">Pub date:</label></th>
<td><input type="text" name="form-2-pub_date" id="id_form-2-pub_date" /></td>
</tr>


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow