[1.6.x] Fixed #21006 -- Added example code for overriding methods on an InlineFormSet.

Thanks treysta at gmail.com for the suggestion.

Backport of 9bfe66164e from master
This commit is contained in:
Tianyi Wang 2013-10-15 11:55:43 +01:00 committed by Tim Graham
parent 07ebd23254
commit ecfd958c84
1 changed files with 26 additions and 4 deletions

View File

@ -919,7 +919,7 @@ class's ``clean`` method::
# example custom validation across forms in the formset: # example custom validation across forms in the formset:
for form in self.forms: for form in self.forms:
# your custom formset validation # your custom formset validation
pass ...
Using a custom queryset Using a custom queryset
----------------------- -----------------------
@ -1046,13 +1046,35 @@ a particular author, you could do this::
:ref:`Manually rendered can_delete and can_order <manually-rendered-can-delete-and-can-order>`. :ref:`Manually rendered can_delete and can_order <manually-rendered-can-delete-and-can-order>`.
Overriding ``clean()`` on an ``InlineFormSet`` Overriding methods on an ``InlineFormSet``
---------------------------------------------- ------------------------------------------
See :ref:`model-formsets-overriding-clean`, but subclass When overriding methods on ``InlineFormSet``, you should subclass
:class:`~models.BaseInlineFormSet` rather than :class:`~models.BaseInlineFormSet` rather than
:class:`~models.BaseModelFormSet`. :class:`~models.BaseModelFormSet`.
For example, If you want to override ``clean()``::
from django.forms.models import BaseInlineFormSet
class MyModelFormSet(BaseInlineFormSet):
def clean(self):
super(MyModelFormSet, self).clean()
# example custom validation across forms in the formset:
for form in self.forms:
# your custom formset validation
...
See also :ref:`model-formsets-overriding-clean`.
Then when you create your inline formset, pass in the optional argument
``formset``::
>>> from django.forms.models import inlineformset_factory
>>> BookFormSet = inlineformset_factory(Author, Book, formset=MyModelFormSet)
>>> author = Author.objects.get(name=u'Mike Royko')
>>> formset = BookFormSet(instance=author)
More than one foreign key to the same model More than one foreign key to the same model
------------------------------------------- -------------------------------------------