具有初始化和单元化数据的表单集

Formset 是一种在一个页面中呈现多个表单的方法,如数据网格。例如:这个 ChoiceForm 可能与某些排序问题有关。比如,孩子们在哪个年龄段之间最聪明?

appname/forms.py

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

在你的视图中你可以使用 formset_factory 构造函数,在这种情况下需要 Form 作为参数,ChoiceFormextra,它描述了除了初始化的形式/表格之外需要渲染多少额外的形式,你可以像任何一样循环 formset 对象其他可迭代的。

如果 formset 未使用数据初始化,则会打印等于 extra + 1 的表单数量,如果初始化了 formset,则会打印 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 for formset: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>