浏览代码

Fixed #26283 -- Fixed removal of trailing nulls for SplitArrayField.

quaspas 9 年之前
父节点
当前提交
91f87b8f91
共有 2 个文件被更改,包括 15 次插入1 次删除
  1. 1 1
      django/contrib/postgres/forms/array.py
  2. 14 0
      tests/postgres_tests/test_array.py

+ 1 - 1
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))

+ 14 - 0
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)