summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/contrib/admin/templatetags/admin_list.py2
-rw-r--r--tests/admin_changelist/tests.py11
2 files changed, 13 insertions, 0 deletions
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</a>" % 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,
+ '<a href="/admin/admin_changelist/grandchild/%s/change/">-</a>' % gc.pk,
+ )
+
def test_clear_all_filters_link(self):
self.client.force_login(self.superuser)
url = reverse("admin:auth_user_changelist")