diff --git a/gadjo/forms/widgets.py b/gadjo/forms/widgets.py index cf0fa6a..06a8c46 100644 --- a/gadjo/forms/widgets.py +++ b/gadjo/forms/widgets.py @@ -36,3 +36,6 @@ class MultiSelectWidget(forms.MultiWidget): def id_for_label(self, id_): return id_ + + def value_omitted_from_data(self, *args, **kwargs): + return super(forms.MultiWidget, self).value_omitted_from_data(*args, **kwargs) diff --git a/tests/test_widgets.py b/tests/test_widgets.py index 1befaef..c13f5ae 100644 --- a/tests/test_widgets.py +++ b/tests/test_widgets.py @@ -26,3 +26,26 @@ def test_multiselect_widget(): assert len(PyQuery(rendered).find('select')) == 2 assert PyQuery(rendered).find('option[selected]').text() == 'Aa Bb' assert ctx['form'].cleaned_data == {'choices': ['a', 'b']} + + +def test_multiselect_widget_omitted_from_data(): + class ExampleForm(forms.Form): + choices = forms.MultipleChoiceField( + label='choices', choices=[('a', 'Aa'), ('b', 'Bb'), ('c', 'Cc')], widget=MultiSelectWidget + ) + + form = ExampleForm(data={}) + assert ( + form.fields['choices'].widget.value_omitted_from_data( + form.data, form.files, form.add_prefix('choices') + ) + is True + ) + + form = ExampleForm(data={'choices': 'a'}) + assert ( + form.fields['choices'].widget.value_omitted_from_data( + form.data, form.files, form.add_prefix('choices') + ) + is False + )