widget: allow setting empty value in MultiSelectWidget (#77469) #21
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue