This commit is contained in:
ClausSander 2025-11-16 20:48:25 +01:00 committed by GitHub
commit c96e0e3f35
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 9 additions and 3 deletions

View file

@ -18,7 +18,7 @@
<a href="{{ header.url_toggle }}" class="toggle {{ header.ascending|yesno:'ascending,descending' }}" title="{% translate "Toggle sorting" %}"></a>
</div>
{% endif %}
<div class="text">{% if header.sortable %}<a role="button" href="{{ header.url_primary }}">{{ header.text|capfirst }}</a>{% else %}<span>{{ header.text|capfirst }}</span>{% endif %}</div>
<div class="text" id="{{ header.id }}">{% if header.sortable %}<a role="button" href="{{ header.url_primary }}">{{ header.text|capfirst }}</a>{% else %}<span>{{ header.text|capfirst }}</span>{% endif %}</div>
<div class="clear"></div>
</th>{% endfor %}
</tr>

View file

@ -26,7 +26,7 @@ from django.urls import NoReverseMatch
from django.utils import formats, timezone
from django.utils.html import format_html
from django.utils.safestring import mark_safe
from django.utils.text import capfirst
from django.utils.text import capfirst, slugify
from django.utils.translation import gettext as _
from .base import InclusionAdminNode
@ -167,6 +167,7 @@ def result_headers(cl):
yield {
"text": text,
"id": slugify(text),
"sortable": True,
"sorted": is_sorted,
"ascending": order_type == "asc",
@ -219,6 +220,9 @@ def items_for_result(cl, result, form):
link_to_changelist = link_in_col(first, field_name, cl)
try:
f, attr, value = lookup_field(field_name, result, cl.model_admin)
label, label_attr = label_for_field(
field_name, cl.model, model_admin=cl.model_admin, return_attr=True
)
except ObjectDoesNotExist:
result_repr = empty_value_display
else:
@ -306,6 +310,8 @@ def items_for_result(cl, result, form):
)
):
bf = form[field_name]
if not label_attr:
bf.field.widget.attrs["aria-labelledby"] = slugify(label)
result_repr = mark_safe(str(bf.errors) + str(bf))
yield format_html("<td{}>{}</td>", row_class, result_repr)
if form and not form[cl.model._meta.pk.name].is_hidden:

View file

@ -432,7 +432,7 @@ class ChangeListTests(TestCase):
# make sure that list editable fields are rendered in divs correctly
editable_name_field = (
'<input name="form-0-name" value="name" class="vTextField" '
'maxlength="30" type="text" id="id_form-0-name">'
'maxlength="30" type="text" id="id_form-0-name" aria-labelledby="name">'
)
self.assertInHTML(
'<td class="field-name">%s</td>' % editable_name_field,