mirror of
https://github.com/django/django.git
synced 2025-11-17 18:48:15 +00:00
Merge 8fc1fab66f into 5c60763561
This commit is contained in:
commit
c96e0e3f35
3 changed files with 9 additions and 3 deletions
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue