summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/forms/models.py9
-rw-r--r--tests/model_forms/test_uuid.py11
2 files changed, 17 insertions, 3 deletions
diff --git a/django/forms/models.py b/django/forms/models.py
index be59dbe4a0..d220e3c90f 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -1562,7 +1562,12 @@ class ModelChoiceField(ChoiceField):
if isinstance(value, self.queryset.model):
value = getattr(value, key)
value = self.queryset.get(**{key: value})
- except (ValueError, TypeError, self.queryset.model.DoesNotExist):
+ except (
+ ValueError,
+ TypeError,
+ self.queryset.model.DoesNotExist,
+ ValidationError,
+ ):
raise ValidationError(
self.error_messages["invalid_choice"],
code="invalid_choice",
@@ -1640,7 +1645,7 @@ class ModelMultipleChoiceField(ModelChoiceField):
self.validate_no_null_characters(pk)
try:
self.queryset.filter(**{key: pk})
- except (ValueError, TypeError):
+ except (ValueError, TypeError, ValidationError):
raise ValidationError(
self.error_messages["invalid_pk_value"],
code="invalid_pk_value",
diff --git a/tests/model_forms/test_uuid.py b/tests/model_forms/test_uuid.py
index 583b3fea94..b60ec93086 100644
--- a/tests/model_forms/test_uuid.py
+++ b/tests/model_forms/test_uuid.py
@@ -30,6 +30,15 @@ class ModelFormBaseTest(TestCase):
def test_model_multiple_choice_field_uuid_pk(self):
f = forms.ModelMultipleChoiceField(UUIDPK.objects.all())
with self.assertRaisesMessage(
- ValidationError, "“invalid_uuid” is not a valid UUID."
+ ValidationError, "“invalid_uuid” is not a valid value."
):
f.clean(["invalid_uuid"])
+
+ def test_model_choice_invalid_pk_value_error_messages(self):
+ f = forms.ModelChoiceField(UUIDPK.objects.all())
+ with self.assertRaisesMessage(
+ ValidationError,
+ "['Select a valid choice. "
+ "That choice is not one of the available choices.']",
+ ):
+ f.clean("invalid")