diff --git a/semantic_version/django_fields.py b/semantic_version/django_fields.py index e5bd7eb..69f1e08 100644 --- a/semantic_version/django_fields.py +++ b/semantic_version/django_fields.py @@ -6,6 +6,7 @@ import django from django.db import models +from django.core.exceptions import ValidationError if django.VERSION >= (3, 0): # See https://docs.djangoproject.com/en/dev/releases/3.0/#features-deprecated-in-3-0 @@ -75,10 +76,13 @@ def to_python(self, value): return value if isinstance(value, base.Version): return value - if self.coerce: - return base.Version.coerce(value, partial=self.partial) - else: - return base.Version(value, partial=self.partial) + try: + if self.coerce: + return base.Version.coerce(value, partial=self.partial) + else: + return base.Version(value, partial=self.partial) + except ValueError as e: + raise ValidationError(self.default_error_messages['invalid'], code='invalid') from e class SpecField(SemVerField): @@ -104,4 +108,7 @@ def to_python(self, value): return value if isinstance(value, base.BaseSpec): return value - return base.BaseSpec.parse(value, syntax=self.syntax) + try: + return base.BaseSpec.parse(value, syntax=self.syntax) + except ValueError as e: + raise ValidationError(self.default_error_messages['invalid'], code='invalid') from e