From 033b26173bbcdf55294f0a019c61cbf6341582b2 Mon Sep 17 00:00:00 2001 From: Loic Bistuer Date: Fri, 22 Nov 2013 19:55:02 +0700 Subject: [PATCH] Improved docs for ModelFormSet.clean(). --- docs/topics/forms/modelforms.txt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/topics/forms/modelforms.txt b/docs/topics/forms/modelforms.txt index 79a5dbda9c..d8d1c106f8 100644 --- a/docs/topics/forms/modelforms.txt +++ b/docs/topics/forms/modelforms.txt @@ -943,6 +943,24 @@ class's ``clean`` method:: # your custom formset validation ... +Also note that by the time you reach this step, individual model instances +have already been created for each ``Form``. Modifying a value in +``form.cleaned_data`` is not sufficient to affect the saved value. If you wish +to modify a value in ``ModelFormSet.clean()`` you must modify +``form.instance``:: + + from django.forms.models import BaseModelFormSet + + class MyModelFormSet(BaseModelFormSet): + def clean(self): + super(MyModelFormSet, self).clean() + + for form in self.forms: + name = form.cleaned_data['name'].upper() + form.cleaned_data['name'] = name + # update the instance value. + form.instance.name = name + Using a custom queryset -----------------------