From c411377bd56e0f97c56a3f9c13f0b7a435906dd9 Mon Sep 17 00:00:00 2001 From: Luke Plant Date: Mon, 21 Feb 2011 15:43:42 +0000 Subject: [PATCH] Fixed #15349 - Bound FormSet produces bound empty_form Thanks to hidde-jan for the report and patch. git-svn-id: http://code.djangoproject.com/svn/django/trunk@15614 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/forms/formsets.py | 3 --- tests/regressiontests/forms/tests/formsets.py | 22 +++++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/django/forms/formsets.py b/django/forms/formsets.py index 8c153f6cf15..da92fbd408c 100644 --- a/django/forms/formsets.py +++ b/django/forms/formsets.py @@ -144,9 +144,6 @@ class BaseFormSet(StrAndUnicode): 'prefix': self.add_prefix('__prefix__'), 'empty_permitted': True, } - if self.is_bound: - defaults['data'] = self.data - defaults['files'] = self.files defaults.update(kwargs) form = self.form(**defaults) self.add_fields(form, None) diff --git a/tests/regressiontests/forms/tests/formsets.py b/tests/regressiontests/forms/tests/formsets.py index cbff56f55eb..fd854ecabad 100644 --- a/tests/regressiontests/forms/tests/formsets.py +++ b/tests/regressiontests/forms/tests/formsets.py @@ -878,6 +878,28 @@ class TestIsBoundBehavior(TestCase): self.assertFalse(formset.is_valid()) self.assertEquals([{}, {'pub_date': [u'This field is required.']}], formset.errors) + def test_empty_forms_are_unbound(self): + data = { + 'form-TOTAL_FORMS': u'1', + 'form-INITIAL_FORMS': u'0', + 'form-0-title': u'Test', + 'form-0-pub_date': u'1904-06-16', + } + unbound_formset = ArticleFormSet() + bound_formset = ArticleFormSet(data) + + empty_forms = [] + + empty_forms.append(unbound_formset.empty_form) + empty_forms.append(bound_formset.empty_form) + + # Empty forms should be unbound + self.assertFalse(empty_forms[0].is_bound) + self.assertFalse(empty_forms[1].is_bound) + + # The empty forms should be equal. + self.assertEqual(empty_forms[0].as_p(), empty_forms[1].as_p()) + class TestEmptyFormSet(TestCase): "Test that an empty formset still calls clean()" def test_empty_formset_is_valid(self):