diff options
author | Tianyi Wang <wty52133@gmail.com> | 2013-10-15 11:55:43 +0100 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2013-10-15 07:36:37 -0400 |
commit | ecfd958c84a2b224ff1b71c42cfe481da98c14e6 (patch) | |
tree | 8ec08325c8fce26d2fedcb5f305eebd82b8f5aac | |
parent | 07ebd23254acab0677aca8baf76440811e9473e2 (diff) | |
download | django-ecfd958c84a2b224ff1b71c42cfe481da98c14e6.tar.gz |
[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
-rw-r--r-- | docs/topics/forms/modelforms.txt | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/docs/topics/forms/modelforms.txt b/docs/topics/forms/modelforms.txt index 585a31831b..c88d90921c 100644 --- a/docs/topics/forms/modelforms.txt +++ b/docs/topics/forms/modelforms.txt @@ -919,7 +919,7 @@ class's ``clean`` method:: # example custom validation across forms in the formset: for form in self.forms: # your custom formset validation - pass + ... 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>`. -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.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 ------------------------------------------- |