summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2015-10-26 19:37:47 -0400
committerTim Graham <timograham@gmail.com>2015-10-27 08:13:27 -0400
commit69e6045ceb18d859a1586bcd5e64f9b786d87c32 (patch)
tree01baff5ac92181dca86dc411dc6379b55328cec2
parent6b631b5c0bd88f7868308b966e8117b8da335669 (diff)
[1.8.x] Fixed #25597 -- Fixed crash with SplitArrayField and IntegerField on invalid value.
Backport of 1f07da3e29c7c3d47968e1c4531dd9bf902575b7 from master
-rw-r--r--django/contrib/postgres/forms/array.py2
-rw-r--r--docs/releases/1.8.6.txt3
-rw-r--r--tests/postgres_tests/test_array.py5
3 files changed, 9 insertions, 1 deletions
diff --git a/django/contrib/postgres/forms/array.py b/django/contrib/postgres/forms/array.py
index 01c4d53527..e4c848424a 100644
--- a/django/contrib/postgres/forms/array.py
+++ b/django/contrib/postgres/forms/array.py
@@ -166,7 +166,7 @@ class SplitArrayField(forms.Field):
errors.append(None)
except ValidationError as error:
errors.append(ValidationError(
- string_concat(self.error_messages['item_invalid'], error.message),
+ string_concat(self.error_messages['item_invalid'], ' '.join(error.messages)),
code='item_invalid',
params={'nth': i},
))
diff --git a/docs/releases/1.8.6.txt b/docs/releases/1.8.6.txt
index d2f3bd8898..75bd79542b 100644
--- a/docs/releases/1.8.6.txt
+++ b/docs/releases/1.8.6.txt
@@ -38,3 +38,6 @@ Bugfixes
* Fixed a typo in the name of the `strictly_above` PostGIS lookup
(:ticket:`25592`).
+
+* Fixed crash with ``contrib.postgres.forms.SplitArrayField`` and
+ ``IntegerField`` on invalid value (:ticket:`25597`).
diff --git a/tests/postgres_tests/test_array.py b/tests/postgres_tests/test_array.py
index 589982342e..d85c0f58ec 100644
--- a/tests/postgres_tests/test_array.py
+++ b/tests/postgres_tests/test_array.py
@@ -484,6 +484,11 @@ class TestSplitFormField(TestCase):
self.assertFalse(form.is_valid())
self.assertEqual(form.errors, {'array': ['Item 2 in the array did not validate: This field is required.']})
+ def test_invalid_integer(self):
+ msg = 'Item 1 in the array did not validate: Ensure this value is less than or equal to 100.'
+ with self.assertRaisesMessage(exceptions.ValidationError, msg):
+ SplitArrayField(forms.IntegerField(max_value=100), size=2).clean([0, 101])
+
def test_rendering(self):
class SplitForm(forms.Form):
array = SplitArrayField(forms.CharField(), size=3)