widget: allow setting empty value in MultiSelectWidget (#77469)
gitea/gadjo/pipeline/head This commit looks good Details

This commit is contained in:
Valentin Deniaud 2023-05-11 11:45:30 +02:00
parent f4a427d14c
commit e3ad91a61c
2 changed files with 26 additions and 0 deletions

View File

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

View File

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