Django
formsets
Ricerca…
Sintassi
- NewFormSet = formset_factory (SomeForm, extra = 2)
- formset = NewFormSet (initial = [{'some_field': 'Field Value', 'other_field': 'Other Field Value',}]))
Formset con dati inizializzati e unitializzati
Formset
è un modo per rendere più moduli in una pagina, come una griglia di dati. Es: Questo ChoiceForm
potrebbe essere associato a qualche domanda di ordinamento. come, i bambini sono più intelligenti tra quale età?
appname/forms.py
from django import forms
class ChoiceForm(forms.Form):
choice = forms.CharField()
pub_date = forms.DateField()
Nel vostro punto di vista è possibile utilizzare formset_factory
costruttore che prende prende Form
come parametro la sua ChoiceForm
in questo caso e extra
che descrive quante forme aggiuntivi diverso inizializzati form / moduli deve essere reso, e si può ciclo sopra il formset
oggetto come qualsiasi altro iterabile.
Se il formset non è inizializzato con i dati, stampa il numero di moduli uguale a extra + 1
e se il formset è inizializzato, stampa initialized + extra
caso di numero extra
di moduli vuoti diversi da quelli inizializzati.
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(),}
])
se si esegue il loop su un formset object
come questo per form in 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>