Django
Formsets
Recherche…
Syntaxe
- NewFormSet = formset_factory (SomeForm, extra = 2)
- formset = NewFormSet (initial = [{'some_field': 'Valeur du champ', 'other_field': 'Autre valeur du champ',}])
Formsets avec des données initialisées et unifiées
Formset
est un moyen de rendre plusieurs formulaires dans une page, comme une grille de données. Ex: Ce ChoiceForm
peut être associé à une question de tri. comme, les enfants sont les plus intelligents entre quel âge?
appname/forms.py
from django import forms
class ChoiceForm(forms.Form):
choice = forms.CharField()
pub_date = forms.DateField()
Dans vos vues, vous pouvez utiliser le constructeur formset_factory
qui prend prendre Form
comme paramètre, son ChoiceForm
dans ce cas et extra
qui décrit combien de formulaires supplémentaires autres que la forme / les formulaires initialisés doivent être rendus et vous pouvez formset
objet formset
comme n'importe quel autre itérable.
Si le formset n'est pas initialisé avec des données, il imprime le nombre de formulaires égal à extra + 1
et si le formset est initialisé, il imprime initialized + extra
lorsque extra
nombre de formulaires vides autres que ceux initialisés est supérieur.
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(),}
])
si vous formset object
sur un formset object
comme celui-ci pour formulaire dans 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>