具有初始化和單元化資料的表單集
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
的表單數量,如果初始化了 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>