diff --git a/django/forms/forms.py b/django/forms/forms.py index 97ee72e98eda9..c2b700ce77817 100644 --- a/django/forms/forms.py +++ b/django/forms/forms.py @@ -318,7 +318,7 @@ def clean(self): not be associated with a particular field; it will have a special-case association with the field named '__all__'. """ - pass + return self.cleaned_data def has_changed(self): """ diff --git a/docs/releases/1.7.txt b/docs/releases/1.7.txt index 6bf13834d2cb5..26a0beeece70f 100644 --- a/docs/releases/1.7.txt +++ b/docs/releases/1.7.txt @@ -129,8 +129,7 @@ Minor features * The :meth:`~django.forms.Form.clean` method on a form no longer needs to return ``self.cleaned_data``. If it does return a changed dictionary then - that will still be used. The default implementation no longer returns - ``self.cleaned_data``. + that will still be used. Backwards incompatible changes in 1.7 ===================================== diff --git a/tests/forms_tests/tests/test_extra.py b/tests/forms_tests/tests/test_extra.py index ba835495c657f..3bc22243fb7e8 100644 --- a/tests/forms_tests/tests/test_extra.py +++ b/tests/forms_tests/tests/test_extra.py @@ -620,6 +620,19 @@ def clean(self): self.assertTrue(f.is_valid()) self.assertEqual(f.cleaned_data['username'], 'sirrobin') + def test_changing_cleaned_data_nothing_returned(self): + class UserForm(Form): + username = CharField(max_length=10) + password = CharField(widget=PasswordInput) + + def clean(self): + self.cleaned_data['username'] = self.cleaned_data['username'].lower() + # don't return anything + + f = UserForm({'username': 'SirRobin', 'password': 'blue'}) + self.assertTrue(f.is_valid()) + self.assertEqual(f.cleaned_data['username'], 'sirrobin') + def test_changing_cleaned_data_in_clean(self): class UserForm(Form): username = CharField(max_length=10)