summaryrefslogtreecommitdiff
path: root/django/contrib/postgres/fields/array.py
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2015-12-01 17:59:58 -0500
committerSimon Charette <charette.s@gmail.com>2015-12-17 20:25:04 -0500
commit3738e4ac46688a0f13139c0b9058fc81c1aac424 (patch)
tree37d6d9f541cbc86fd55f9f665240cf17eccbec00 /django/contrib/postgres/fields/array.py
parent86eccdc8b67728d84440a46e5bf62c78f2eddf6d (diff)
downloaddjango-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.py25
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):