summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/contrib/postgres/forms/array.py2
-rw-r--r--tests/postgres_tests/test_array.py14
2 files changed, 15 insertions, 1 deletions
diff --git a/django/contrib/postgres/forms/array.py b/django/contrib/postgres/forms/array.py
index ea466bc1ea..dd9ac1178e 100644
--- a/django/contrib/postgres/forms/array.py
+++ b/django/contrib/postgres/forms/array.py
@@ -183,7 +183,7 @@ class SplitArrayField(forms.Field):
null_index = i
else:
break
- if null_index:
+ if null_index is not None:
cleaned_data = cleaned_data[:null_index]
errors = errors[:null_index]
errors = list(filter(None, errors))
diff --git a/tests/postgres_tests/test_array.py b/tests/postgres_tests/test_array.py
index f5c333e56f..670c98e7a7 100644
--- a/tests/postgres_tests/test_array.py
+++ b/tests/postgres_tests/test_array.py
@@ -663,6 +663,20 @@ class TestSplitFormField(PostgreSQLTestCase):
self.assertTrue(form.is_valid(), form.errors)
self.assertEqual(form.cleaned_data, {'array': ['a', '', 'b']})
+ def test_remove_trailing_nulls_not_required(self):
+ class SplitForm(forms.Form):
+ array = SplitArrayField(
+ forms.CharField(required=False),
+ size=2,
+ remove_trailing_nulls=True,
+ required=False,
+ )
+
+ data = {'array_0': '', 'array_1': ''}
+ form = SplitForm(data)
+ self.assertTrue(form.is_valid())
+ self.assertEqual(form.cleaned_data, {'array': []})
+
def test_required_field(self):
class SplitForm(forms.Form):
array = SplitArrayField(forms.CharField(), size=3)