diff options
| author | Chaitanya <bkc14042005@gmail.com> | 2025-07-31 10:37:40 +0530 |
|---|---|---|
| committer | Jacob Walls <jacobtylerwalls@gmail.com> | 2025-12-05 09:33:42 -0500 |
| commit | 16252e690720edace3e0e220b99d9141fe091fb4 (patch) | |
| tree | 74c66757268b205bf425f638acf6731365bc89bc | |
| parent | 17d644c8e257c2ea5cc738fb7a9c47989e29bf09 (diff) | |
Fixed #36367 -- Added a label to the date_hierarchy in admin changelist.
Thanks Sarah Boyce for the implementation idea.
4 files changed, 19 insertions, 3 deletions
diff --git a/django/contrib/admin/static/admin/css/changelists.css b/django/contrib/admin/static/admin/css/changelists.css index 60cbaf21eb..3557097292 100644 --- a/django/contrib/admin/static/admin/css/changelists.css +++ b/django/contrib/admin/static/admin/css/changelists.css @@ -265,7 +265,8 @@ font-weight: bold; } -.change-list .toplinks a { +.change-list .toplinks a, +.change-list .toplinks span { font-size: 0.8125rem; } diff --git a/django/contrib/admin/templates/admin/date_hierarchy.html b/django/contrib/admin/templates/admin/date_hierarchy.html index c508856428..2480ce7c31 100644 --- a/django/contrib/admin/templates/admin/date_hierarchy.html +++ b/django/contrib/admin/templates/admin/date_hierarchy.html @@ -1,5 +1,7 @@ +{% load i18n %} {% if show %} -<nav class="toplinks"> +<nav class="toplinks" aria-labelledby="date-hierarchy-label"> +<span id="date-hierarchy-label">{% blocktranslate %}Filter by {{ field_name }}{% endblocktranslate %}</span> {% block date-hierarchy-toplinks %} {% block date-hierarchy-back %} {% if back %}<a href="{{ back.link }}" class="date-back">‹ {{ back.title }}</a>{% endif %} diff --git a/django/contrib/admin/templatetags/admin_list.py b/django/contrib/admin/templatetags/admin_list.py index 43d87c0024..2100f93566 100644 --- a/django/contrib/admin/templatetags/admin_list.py +++ b/django/contrib/admin/templatetags/admin_list.py @@ -376,6 +376,7 @@ def date_hierarchy(cl): if cl.date_hierarchy: field_name = cl.date_hierarchy field = get_fields_from_path(cl.model, field_name)[-1] + field_verbose_name = field.verbose_name if isinstance(field, models.DateTimeField): dates_or_datetimes = "datetimes" else: @@ -418,6 +419,7 @@ def date_hierarchy(cl): "choices": [ {"title": capfirst(formats.date_format(day, "MONTH_DAY_FORMAT"))} ], + "field_name": field_verbose_name, } elif year_lookup and month_lookup: days = getattr(cl.queryset, dates_or_datetimes)(field_name, "day") @@ -440,6 +442,7 @@ def date_hierarchy(cl): } for day in days ], + "field_name": field_verbose_name, } elif year_lookup: months = getattr(cl.queryset, dates_or_datetimes)(field_name, "month") @@ -457,6 +460,7 @@ def date_hierarchy(cl): } for month in months ], + "field_name": field_verbose_name, } else: years = getattr(cl.queryset, dates_or_datetimes)(field_name, "year") @@ -470,6 +474,7 @@ def date_hierarchy(cl): } for year in years ], + "field_name": field_verbose_name, } diff --git a/tests/admin_changelist/test_date_hierarchy.py b/tests/admin_changelist/test_date_hierarchy.py index 94a6a8eb6c..ca3994166f 100644 --- a/tests/admin_changelist/test_date_hierarchy.py +++ b/tests/admin_changelist/test_date_hierarchy.py @@ -2,7 +2,8 @@ from datetime import datetime from django.contrib.admin.options import IncorrectLookupParameters from django.contrib.auth.models import User -from django.test import RequestFactory, TestCase +from django.test import RequestFactory, TestCase, override_settings +from django.urls import reverse from django.utils.timezone import make_aware from .admin import EventAdmin @@ -95,3 +96,10 @@ class DateHierarchyTests(TestCase): self.assertRaises(IncorrectLookupParameters), ): self.assertDateParams(invalid_query, None, None) + + @override_settings(ROOT_URLCONF="admin_changelist.urls") + def test_label_in_hierarchy(self): + self.client.force_login(self.superuser) + Event.objects.create(date=datetime(2017, 1, 1)) + response = self.client.get(reverse("admin:admin_changelist_event_changelist")) + self.assertContains(response, "Filter by date", status_code=200) |
