summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJannis Leidel <jannis@leidel.info>2010-12-13 13:56:55 +0000
committerJannis Leidel <jannis@leidel.info>2010-12-13 13:56:55 +0000
commit32bf35da09660604e8c65c1ac75f28b1918cf91c (patch)
tree8963999baa6c113f027506bdbff9770e75d07b9f
parent69edfc7531f99427e9c3544a262c7f73611ea930 (diff)
[1.2.X] Fixed #14144 -- Made sure custom validators are called in ModelMultipleChoiceFields. Thanks, matiasb.
Backport from trunk (r14886). git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@14906 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/forms/models.py3
-rw-r--r--tests/regressiontests/model_forms_regress/tests.py16
2 files changed, 19 insertions, 0 deletions
diff --git a/django/forms/models.py b/django/forms/models.py
index 6ba2bed472..9180ac17b8 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -1035,6 +1035,9 @@ class ModelMultipleChoiceField(ModelChoiceField):
for val in value:
if force_unicode(val) not in pks:
raise ValidationError(self.error_messages['invalid_choice'] % val)
+ # Since this overrides the inherited ModelChoiceField.clean
+ # we run custom validators here
+ self.run_validators(value)
return qs
def prepare_value(self, value):
diff --git a/tests/regressiontests/model_forms_regress/tests.py b/tests/regressiontests/model_forms_regress/tests.py
index e30b983aa8..54f04d956e 100644
--- a/tests/regressiontests/model_forms_regress/tests.py
+++ b/tests/regressiontests/model_forms_regress/tests.py
@@ -31,6 +31,22 @@ class ModelMultipleChoiceFieldTests(TestCase):
selected = f.clean([1, 3, 5, 7, 9])
self.assertEquals(len(db.connection.queries), 1)
+ def test_model_multiple_choice_run_validators(self):
+ """
+ Test that ModelMultipleChoiceField run given validators (#14144).
+ """
+ for i in range(30):
+ Person.objects.create(name="Person %s" % i)
+
+ self._validator_run = False
+ def my_validator(value):
+ self._validator_run = True
+
+ f = forms.ModelMultipleChoiceField(queryset=Person.objects.all(),
+ validators=[my_validator])
+ f.clean([1,2])
+ self.assertTrue(self._validator_run)
+
class TripleForm(forms.ModelForm):
class Meta:
model = Triple