summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Smith <smithdc@gmail.com>2021-11-05 08:11:25 +0000
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-11-05 11:05:52 +0100
commitc6c6cd3c5ad9c36795bb120e521590424f034ae4 (patch)
tree54e6978fbd2533013a9e6053b9e936b124b63cf2
parent2c01ebb4be5d53cbf6450f356c10e436025d6d07 (diff)
Fixed #33235 -- Removed "for = ..." from MultiWidget's <label>.
This improves accessibility for screen reader users.
-rw-r--r--django/forms/widgets.py4
-rw-r--r--tests/forms_tests/field_tests/test_multivaluefield.py4
-rw-r--r--tests/forms_tests/field_tests/test_splitdatetimefield.py15
-rw-r--r--tests/postgres_tests/test_ranges.py8
4 files changed, 21 insertions, 10 deletions
diff --git a/django/forms/widgets.py b/django/forms/widgets.py
index 00c19e2c55..386b0e7c3f 100644
--- a/django/forms/widgets.py
+++ b/django/forms/widgets.py
@@ -849,9 +849,7 @@ class MultiWidget(Widget):
return context
def id_for_label(self, id_):
- if id_:
- id_ += '_0'
- return id_
+ return ''
def value_from_datadict(self, data, files, name):
return [
diff --git a/tests/forms_tests/field_tests/test_multivaluefield.py b/tests/forms_tests/field_tests/test_multivaluefield.py
index 22e0892f68..449bf16d19 100644
--- a/tests/forms_tests/field_tests/test_multivaluefield.py
+++ b/tests/forms_tests/field_tests/test_multivaluefield.py
@@ -141,7 +141,7 @@ class MultiValueFieldTest(SimpleTestCase):
self.assertHTMLEqual(
form.as_table(),
"""
- <tr><th><label for="id_field1_0">Field1:</label></th>
+ <tr><th><label>Field1:</label></th>
<td><input type="text" name="field1_0" id="id_field1_0" required>
<select multiple name="field1_1" id="id_field1_1" required>
<option value="J">John</option>
@@ -164,7 +164,7 @@ class MultiValueFieldTest(SimpleTestCase):
self.assertHTMLEqual(
form.as_table(),
"""
- <tr><th><label for="id_field1_0">Field1:</label></th>
+ <tr><th><label>Field1:</label></th>
<td><input type="text" name="field1_0" value="some text" id="id_field1_0" required>
<select multiple name="field1_1" id="id_field1_1" required>
<option value="J" selected>John</option>
diff --git a/tests/forms_tests/field_tests/test_splitdatetimefield.py b/tests/forms_tests/field_tests/test_splitdatetimefield.py
index 716e49c343..bf20587682 100644
--- a/tests/forms_tests/field_tests/test_splitdatetimefield.py
+++ b/tests/forms_tests/field_tests/test_splitdatetimefield.py
@@ -1,7 +1,7 @@
import datetime
from django.core.exceptions import ValidationError
-from django.forms import SplitDateTimeField
+from django.forms import Form, SplitDateTimeField
from django.forms.widgets import SplitDateTimeWidget
from django.test import SimpleTestCase
@@ -60,3 +60,16 @@ class SplitDateTimeFieldTest(SimpleTestCase):
self.assertTrue(f.has_changed(datetime.datetime(2008, 5, 6, 12, 40, 00), ['2008-05-06', '12:40:00']))
self.assertFalse(f.has_changed(datetime.datetime(2008, 5, 6, 12, 40, 00), ['06/05/2008', '12:40']))
self.assertTrue(f.has_changed(datetime.datetime(2008, 5, 6, 12, 40, 00), ['06/05/2008', '12:41']))
+
+ def test_form_as_table(self):
+ class TestForm(Form):
+ datetime = SplitDateTimeField()
+
+ f = TestForm()
+ self.assertHTMLEqual(
+ f.as_table(),
+ '<tr><th><label>Datetime:</label></th><td>'
+ '<input type="text" name="datetime_0" required id="id_datetime_0">'
+ '<input type="text" name="datetime_1" required id="id_datetime_1">'
+ '</td></tr>',
+ )
diff --git a/tests/postgres_tests/test_ranges.py b/tests/postgres_tests/test_ranges.py
index 57704efaa4..c2f9d443dd 100644
--- a/tests/postgres_tests/test_ranges.py
+++ b/tests/postgres_tests/test_ranges.py
@@ -665,7 +665,7 @@ class TestFormField(PostgreSQLSimpleTestCase):
self.assertHTMLEqual(str(form), '''
<tr>
<th>
- <label for="id_field_0">Field:</label>
+ <label>Field:</label>
</th>
<td>
<input id="id_field_0_0" name="field_0_0" type="text">
@@ -700,7 +700,7 @@ class TestFormField(PostgreSQLSimpleTestCase):
form.as_table(),
"""
<tr><th>
- <label for="id_datetime_field_0">Datetime field:</label>
+ <label>Datetime field:</label>
</th><td>
<input type="text" name="datetime_field_0" id="id_datetime_field_0">
<input type="text" name="datetime_field_1" id="id_datetime_field_1">
@@ -717,7 +717,7 @@ class TestFormField(PostgreSQLSimpleTestCase):
form.as_table(),
"""
<tr><th>
- <label for="id_datetime_field_0">Datetime field:</label>
+ <label>Datetime field:</label>
</th><td>
<input type="text" name="datetime_field_0"
value="2010-01-01 11:13:00" id="id_datetime_field_0">
@@ -754,7 +754,7 @@ class TestFormField(PostgreSQLSimpleTestCase):
self.assertHTMLEqual(str(RangeForm()), '''
<tr>
- <th><label for="id_ints_0">Ints:</label></th>
+ <th><label>Ints:</label></th>
<td>
<input id="id_ints_0" name="ints_0" type="number">
<input id="id_ints_1" name="ints_1" type="number">