Commit 7a44dc55 authored by Ludovic Delaveau's avatar Ludovic Delaveau Committed by Luke Plant
Browse files

Fixed #16479 - Forms generated from formsets use ErrorList instead of supplied error_class

Patch with tests from charettes, updated.
parent cc83a4af
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -123,7 +123,11 @@ class BaseFormSet(object):
        """
        Instantiates and returns the i-th form instance in a formset.
        """
        defaults = {'auto_id': self.auto_id, 'prefix': self.add_prefix(i)}
        defaults = {
            'auto_id': self.auto_id,
            'prefix': self.add_prefix(i),
            'error_class': self.error_class,
            }
        if self.is_bound:
            defaults['data'] = self.data
            defaults['files'] = self.files
+10 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ from __future__ import unicode_literals

from django.forms import Form, CharField, IntegerField, ValidationError, DateField
from django.forms.formsets import formset_factory, BaseFormSet
from django.forms.util import ErrorList
from django.test import TestCase


@@ -847,6 +848,15 @@ class FormsFormsetTestCase(TestCase):
        self.assertTrue(formset)


    def test_formset_error_class(self):
        # Regression tests for #16479 -- formsets form use ErrorList instead of supplied error_class
        class CustomErrorList(ErrorList):
            pass

        formset = FavoriteDrinksFormSet(error_class=CustomErrorList)
        self.assertEqual(formset.forms[0].error_class, CustomErrorList)


data = {
    'choices-TOTAL_FORMS': '1', # the number of forms rendered
    'choices-INITIAL_FORMS': '0', # the number of forms with initial data