Fixed #17127 -- Made field validators list independent per form instance. Thanks claudep for report and patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17046 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
b87114962f
commit
7a718f0f3a
|
@ -178,6 +178,7 @@ class Field(object):
|
||||||
result = copy.copy(self)
|
result = copy.copy(self)
|
||||||
memo[id(self)] = result
|
memo[id(self)] = result
|
||||||
result.widget = copy.deepcopy(self.widget, memo)
|
result.widget = copy.deepcopy(self.widget, memo)
|
||||||
|
result.validators = self.validators[:]
|
||||||
return result
|
return result
|
||||||
|
|
||||||
class CharField(Field):
|
class CharField(Field):
|
||||||
|
|
|
@ -789,6 +789,19 @@ class FormsTestCase(TestCase):
|
||||||
f = Person()
|
f = Person()
|
||||||
self.assertEqual(f['gender'].field.choices, [('f', 'Female'), ('m', 'Male')])
|
self.assertEqual(f['gender'].field.choices, [('f', 'Female'), ('m', 'Male')])
|
||||||
|
|
||||||
|
def test_validators_independence(self):
|
||||||
|
""" Test that we are able to modify a form field validators list without polluting
|
||||||
|
other forms """
|
||||||
|
from django.core.validators import MaxValueValidator
|
||||||
|
class MyForm(Form):
|
||||||
|
myfield = CharField(max_length=25)
|
||||||
|
|
||||||
|
f1 = MyForm()
|
||||||
|
f2 = MyForm()
|
||||||
|
|
||||||
|
f1.fields['myfield'].validators[0] = MaxValueValidator(12)
|
||||||
|
self.assertFalse(f1.fields['myfield'].validators[0] == f2.fields['myfield'].validators[0])
|
||||||
|
|
||||||
def test_hidden_widget(self):
|
def test_hidden_widget(self):
|
||||||
# HiddenInput widgets are displayed differently in the as_table(), as_ul())
|
# HiddenInput widgets are displayed differently in the as_table(), as_ul())
|
||||||
# and as_p() output of a Form -- their verbose names are not displayed, and a
|
# and as_p() output of a Form -- their verbose names are not displayed, and a
|
||||||
|
|
Loading…
Reference in New Issue