[1.8.x] Fixed #25597 -- Fixed crash with SplitArrayField and IntegerField on invalid value.

Backport of 1f07da3e29 from master
This commit is contained in:
Tim Graham 2015-10-26 19:37:47 -04:00
parent 6b631b5c0b
commit 69e6045ceb
3 changed files with 9 additions and 1 deletions

View File

@ -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},
))

View File

@ -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`).

View File

@ -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)