Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #17127 -- Made field validators list independent per form insta…

…nce. Thanks claudep for report and patch.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@17046 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 7a718f0f3a9d08b2f8159cdb8b665e5b84cab83e 1 parent b871149
@carljm carljm authored
View
1  django/forms/fields.py
@@ -178,6 +178,7 @@ def __deepcopy__(self, memo):
result = copy.copy(self)
memo[id(self)] = result
result.widget = copy.deepcopy(self.widget, memo)
+ result.validators = self.validators[:]
return result
class CharField(Field):
View
13 tests/regressiontests/forms/tests/forms.py
@@ -789,6 +789,19 @@ def __init__(self, allow_unspec_gender=False, *args, **kwargs):
f = Person()
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):
# 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
Please sign in to comment.
Something went wrong with that request. Please try again.