mirror of https://github.com/django/django.git
Fixed #30596 -- Fixed SplitArrayField.has_changed() for non-string base fields.
Thanks to Evgeniy Krysanov for the report and the idea to use to_python. Thanks to Mariusz Felisiak for the test case.
This commit is contained in:
parent
54dcfbc367
commit
c238e65e29
|
@ -178,6 +178,10 @@ class SplitArrayField(forms.Field):
|
||||||
kwargs.setdefault('widget', widget)
|
kwargs.setdefault('widget', widget)
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
|
|
||||||
|
def to_python(self, value):
|
||||||
|
value = super().to_python(value)
|
||||||
|
return [self.base_field.to_python(item) for item in value]
|
||||||
|
|
||||||
def clean(self, value):
|
def clean(self, value):
|
||||||
cleaned_data = []
|
cleaned_data = []
|
||||||
errors = []
|
errors = []
|
||||||
|
|
|
@ -909,6 +909,18 @@ class TestSplitFormField(PostgreSQLSimpleTestCase):
|
||||||
obj = form.save(commit=False)
|
obj = form.save(commit=False)
|
||||||
self.assertEqual(obj.field, [1, 2])
|
self.assertEqual(obj.field, [1, 2])
|
||||||
|
|
||||||
|
def test_splitarrayfield_has_changed(self):
|
||||||
|
class Form(forms.ModelForm):
|
||||||
|
field = SplitArrayField(forms.IntegerField(), required=False, size=2)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = IntegerArrayModel
|
||||||
|
fields = ('field',)
|
||||||
|
|
||||||
|
obj = IntegerArrayModel(field=[1, 2])
|
||||||
|
form = Form({'field_0': '1', 'field_1': '2'}, instance=obj)
|
||||||
|
self.assertFalse(form.has_changed())
|
||||||
|
|
||||||
|
|
||||||
class TestSplitFormWidget(PostgreSQLWidgetTestCase):
|
class TestSplitFormWidget(PostgreSQLWidgetTestCase):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue