diff options
author | Simon Charette <charette.s@gmail.com> | 2015-12-01 17:59:58 -0500 |
---|---|---|
committer | Simon Charette <charette.s@gmail.com> | 2015-12-17 20:25:04 -0500 |
commit | 3738e4ac46688a0f13139c0b9058fc81c1aac424 (patch) | |
tree | 37d6d9f541cbc86fd55f9f665240cf17eccbec00 /django/contrib/postgres/fields/array.py | |
parent | 86eccdc8b67728d84440a46e5bf62c78f2eddf6d (diff) | |
download | django-3738e4ac46688a0f13139c0b9058fc81c1aac424.tar.gz |
Fixed #25841 -- Handled base array fields validation errors with params.
Thanks to Trac alias benzid-wael for the report.
Diffstat (limited to 'django/contrib/postgres/fields/array.py')
-rw-r--r-- | django/contrib/postgres/fields/array.py | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/django/contrib/postgres/fields/array.py b/django/contrib/postgres/fields/array.py index 9a1e3c286b..390a55a86d 100644 --- a/django/contrib/postgres/fields/array.py +++ b/django/contrib/postgres/fields/array.py @@ -7,8 +7,9 @@ from django.core import checks, exceptions from django.db.models import Field, IntegerField, Transform from django.db.models.lookups import Exact, In from django.utils import six -from django.utils.translation import string_concat, ugettext_lazy as _ +from django.utils.translation import ugettext_lazy as _ +from ..utils import prefix_validation_error from .utils import AttributeSetter __all__ = ['ArrayField'] @@ -133,14 +134,15 @@ class ArrayField(Field): def validate(self, value, model_instance): super(ArrayField, self).validate(value, model_instance) - for i, part in enumerate(value): + for index, part in enumerate(value): try: self.base_field.validate(part, model_instance) - except exceptions.ValidationError as e: - raise exceptions.ValidationError( - string_concat(self.error_messages['item_invalid'], e.message), + except exceptions.ValidationError as error: + raise prefix_validation_error( + error, + prefix=self.error_messages['item_invalid'], code='item_invalid', - params={'nth': i}, + params={'nth': index}, ) if isinstance(self.base_field, ArrayField): if len({len(i) for i in value}) > 1: @@ -151,14 +153,15 @@ class ArrayField(Field): def run_validators(self, value): super(ArrayField, self).run_validators(value) - for i, part in enumerate(value): + for index, part in enumerate(value): try: self.base_field.run_validators(part) - except exceptions.ValidationError as e: - raise exceptions.ValidationError( - string_concat(self.error_messages['item_invalid'], ' '.join(e.messages)), + except exceptions.ValidationError as error: + raise prefix_validation_error( + error, + prefix=self.error_messages['item_invalid'], code='item_invalid', - params={'nth': i}, + params={'nth': index}, ) def formfield(self, **kwargs): |