diff options
| author | Tim Graham <timograham@gmail.com> | 2015-10-26 19:37:47 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-10-27 08:13:27 -0400 |
| commit | 69e6045ceb18d859a1586bcd5e64f9b786d87c32 (patch) | |
| tree | 01baff5ac92181dca86dc411dc6379b55328cec2 | |
| parent | 6b631b5c0bd88f7868308b966e8117b8da335669 (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.py | 2 | ||||
| -rw-r--r-- | docs/releases/1.8.6.txt | 3 | ||||
| -rw-r--r-- | tests/postgres_tests/test_array.py | 5 |
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) |
