From 5242220a56c531ab7491fd53ac92c5ba28967c61 Mon Sep 17 00:00:00 2001 From: antoliny0919 Date: Tue, 21 Jan 2025 16:20:23 +0900 Subject: [PATCH] [5.2.x] Fixed #36114 -- Fixed link visibility when list_display_links field contains only whitespace. Backport of e262d5355d82901f81fba6c7015643c2b87125bf from main. --- django/contrib/admin/templatetags/admin_list.py | 2 ++ tests/admin_changelist/tests.py | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/django/contrib/admin/templatetags/admin_list.py b/django/contrib/admin/templatetags/admin_list.py index 7a49587172..6615e98bbf 100644 --- a/django/contrib/admin/templatetags/admin_list.py +++ b/django/contrib/admin/templatetags/admin_list.py @@ -223,6 +223,8 @@ def items_for_result(cl, result, form): empty_value_display = getattr( attr, "empty_value_display", empty_value_display ) + if isinstance(value, str) and value.strip() == "": + value = "" if f is None or f.auto_created: if field_name == "action_checkbox": row_classes = ["action-checkbox"] diff --git a/tests/admin_changelist/tests.py b/tests/admin_changelist/tests.py index 8e4557c7c5..17866c8ad6 100644 --- a/tests/admin_changelist/tests.py +++ b/tests/admin_changelist/tests.py @@ -1076,6 +1076,17 @@ class ChangeListTests(TestCase): "http://blues_history.com" % g.pk, ) + def test_blank_str_display_links(self): + self.client.force_login(self.superuser) + gc = GrandChild.objects.create(name=" ") + response = self.client.get( + reverse("admin:admin_changelist_grandchild_changelist") + ) + self.assertContains( + response, + '-' % gc.pk, + ) + def test_clear_all_filters_link(self): self.client.force_login(self.superuser) url = reverse("admin:auth_user_changelist")