class models.BaseModelFormSet
Like regular formsets, Django provides a couple of enhanced formset classes that make it easy to work with Django models. Let’s reuse the Author
model from above:
1 2 3 | >>> from django.forms import modelformset_factory >>> from myapp.models import Author >>> AuthorFormSet = modelformset_factory(Author, fields = ( 'name' , 'title' )) |
Using fields
restricts the formset to use only the given fields. Alternatively, you can take an “opt-out” approach, specifying which fields to exclude:
1 | >>> AuthorFormSet = modelformset_factory(Author, exclude = ( 'birth_date' ,)) |
This will create a formset that is capable of working with the data associated with the Author
model. It works just like a regular formset:
1 2 3 4 5 6 7 8 9 10 | >>> formset = AuthorFormSet() >>> print (formset) < input type = "hidden" name = "form-TOTAL_FORMS" value = "1" id = "id_form-TOTAL_FORMS" / >< input type = "hidden" name = "form-INITIAL_FORMS" value = "0" id = "id_form-INITIAL_FORMS" / >< input type = "hidden" name = "form-MAX_NUM_FORMS" id = "id_form-MAX_NUM_FORMS" / > <tr><th><label for = "id_form-0-name" >Name:< / label>< / th><td>< input id = "id_form-0-name" type = "text" name = "form-0-name" maxlength = "100" / >< / td>< / tr> <tr><th><label for = "id_form-0-title" >Title:< / label>< / th><td><select name = "form-0-title" id = "id_form-0-title" > <option value = " " selected=" selected"> - - - - - - - - - < / option> <option value = "MR" >Mr.< / option> <option value = "MRS" >Mrs.< / option> <option value = "MS" >Ms.< / option> < / select>< input type = "hidden" name = "form-0-id" id = "id_form-0-id" / >< / td>< / tr> |
Note
modelformset_factory()
uses formset_factory()
to generate formsets. This means that a model formset is just an extension of a basic formset that knows how to interact with a particular model.
Please login to continue.