Django
Zestawy formularzy
Szukaj…
Składnia
- NewFormSet = formset_factory (SomeForm, extra = 2)
- formset = NewFormSet (initial = [{'some_field': „Field Value”, „other_field”: „Other Field Value”,}])
Zestawy formularzy z zainicjowanymi i zunifikowanymi danymi
Formset
to sposób renderowania wielu formularzy na jednej stronie, takich jak siatka danych. Np .: ten ChoiceForm
może być związany z jakimś pytaniem. na przykład, dzieci są najbardziej inteligentne pomiędzy którymi wiekiem ?.
appname/forms.py
from django import forms
class ChoiceForm(forms.Form):
choice = forms.CharField()
pub_date = forms.DateField()
W twoich widokach możesz użyć konstruktora formset_factory
który przyjmuje Form
jako parametr w tym przypadku ChoiceForm
i extra
który opisuje, ile dodatkowych formularzy innych niż inicjowana forma / formularze musi być renderowanych, i możesz zapętlać obiekt formset
tak jak każdy inny inne iterowalne.
Jeśli zestaw formularzy nie jest zainicjowany danymi, drukuje liczbę formularzy równą extra + 1
a jeśli zestaw formularzy jest inicjowany, drukuje initialized + extra
tam, gdzie extra
liczba pustych formularzy jest inna niż te zainicjowane.
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(),}
])
jeśli formset object
ten sposób dla formularza w zestawie form: 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>