diff --git a/AUTHORS b/AUTHORS index 58d2918c3b..19eeb5ea3c 100644 --- a/AUTHORS +++ b/AUTHORS @@ -263,6 +263,7 @@ answer newbie questions, and generally made Django that much better: Eric Moritz mrmachine Robin Munn + msundstr Robert Myers Nebojša Dorđević Doug Napoleone diff --git a/django/newforms/formsets.py b/django/newforms/formsets.py index a11aed8221..6cd7b54993 100644 --- a/django/newforms/formsets.py +++ b/django/newforms/formsets.py @@ -40,20 +40,21 @@ class BaseFormSet(StrAndUnicode): self._non_form_errors = None # initialization is different depending on whether we recieved data, initial, or nothing if data or files: - self.management_form = ManagementForm(data, files, auto_id=self.auto_id, prefix=self.prefix) + self.management_form = ManagementForm(data, auto_id=self.auto_id, prefix=self.prefix) if self.management_form.is_valid(): self._total_form_count = self.management_form.cleaned_data[TOTAL_FORM_COUNT] self._initial_form_count = self.management_form.cleaned_data[INITIAL_FORM_COUNT] else: raise ValidationError('ManagementForm data is missing or has been tampered with') - elif initial: - self._initial_form_count = len(initial) - self._total_form_count = self._initial_form_count + self.extra else: - self._initial_form_count = 0 - self._total_form_count = self.extra - initial = {TOTAL_FORM_COUNT: self._total_form_count, INITIAL_FORM_COUNT: self._initial_form_count} - self.management_form = ManagementForm(initial=initial, auto_id=auto_id, prefix=prefix) + if initial: + self._initial_form_count = len(initial) + self._total_form_count = self._initial_form_count + self.extra + else: + self._initial_form_count = 0 + self._total_form_count = self.extra + initial = {TOTAL_FORM_COUNT: self._total_form_count, INITIAL_FORM_COUNT: self._initial_form_count} + self.management_form = ManagementForm(initial=initial, auto_id=self.auto_id, prefix=self.prefix) # instantiate all the forms and put them in self.forms self.forms = [] diff --git a/tests/regressiontests/forms/formsets.py b/tests/regressiontests/forms/formsets.py index fea8f057da..a0e0215660 100644 --- a/tests/regressiontests/forms/formsets.py +++ b/tests/regressiontests/forms/formsets.py @@ -494,4 +494,21 @@ True >>> for error in formset.non_form_errors(): ... print error + +# Regression test for #6926 ################################################## + +Make sure the management form has the correct prefix. + +>>> formset = FavoriteDrinksFormSet() +>>> formset.management_form.prefix +'form' + +>>> formset = FavoriteDrinksFormSet(data={}) +>>> formset.management_form.prefix +'form' + +>>> formset = FavoriteDrinksFormSet(initial={}) +>>> formset.management_form.prefix +'form' + """