summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Martín <diegomartinpi@gmail.com>2016-10-28 19:21:45 +0200
committerTim Graham <timograham@gmail.com>2016-11-22 11:48:37 -0500
commitabd434059e1aaff35bc848998ad2335c630ba434 (patch)
treecf245a9bb74bac786b71f02d7a6915050e2277a3
parentf62abfc03da61977bf080163f0a2ef014decd86a (diff)
Fixed #27250 -- Removed 'for ="..."' from CheckboxSelectMultiple's <label>.
-rw-r--r--django/forms/widgets.py7
-rw-r--r--tests/forms_tests/widget_tests/test_checkboxselectmultiple.py13
2 files changed, 20 insertions, 0 deletions
diff --git a/django/forms/widgets.py b/django/forms/widgets.py
index 7c7e2c90fe..5c593cca71 100644
--- a/django/forms/widgets.py
+++ b/django/forms/widgets.py
@@ -822,6 +822,13 @@ class CheckboxSelectMultiple(RendererMixin, SelectMultiple):
# never known if the value is actually omitted.
return False
+ def id_for_label(self, id_):
+ """"
+ Don't include for="field_0" in <label> because clicking such a label
+ would toggle the first checkbox.
+ """
+ return ''
+
class MultiWidget(Widget):
"""
diff --git a/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py b/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py
index 27e870559d..a92e5533e2 100644
--- a/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py
+++ b/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py
@@ -1,3 +1,4 @@
+from django import forms
from django.forms import CheckboxSelectMultiple
from .base import WidgetTest
@@ -125,3 +126,15 @@ class CheckboxSelectMultipleTest(WidgetTest):
widget = self.widget(choices=self.beatles)
self.assertIs(widget.value_omitted_from_data({}, {}, 'field'), False)
self.assertIs(widget.value_omitted_from_data({'field': 'value'}, {}, 'field'), False)
+
+ def test_label(self):
+ """"
+ CheckboxSelectMultiple doesn't contain 'for="field_0"' in the <label>
+ because clicking that would toggle the first checkbox.
+ """
+ class TestForm(forms.Form):
+ f = forms.MultipleChoiceField(widget=CheckboxSelectMultiple)
+
+ bound_field = TestForm()['f']
+ self.assertEqual(bound_field.field.widget.id_for_label('id'), '')
+ self.assertEqual(bound_field.label_tag(), '<label>F:</label>')