diff options
| author | SiHyunLee <antoliny0919@gmail.com> | 2026-02-20 23:43:41 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-20 09:43:41 -0500 |
| commit | 283ea9e9e014adf0013c18700c36b98efa2f0aac (patch) | |
| tree | b8725eb30bae3e1f3e81d9538f74db419f07432e /django/contrib/admin/options.py | |
| parent | 96984b9b0f1d88f096985a908ee67dc6f2b9a682 (diff) | |
Fixed #36127 -- Applied default empty display value to links otherwise containing only whitespace in admin.
Diffstat (limited to 'django/contrib/admin/options.py')
| -rw-r--r-- | django/contrib/admin/options.py | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py index b67b023bd3..c59cb2ab4c 100644 --- a/django/contrib/admin/options.py +++ b/django/contrib/admin/options.py @@ -22,6 +22,7 @@ from django.contrib.admin.templatetags.admin_urls import add_preserved_filters from django.contrib.admin.utils import ( NestedObjects, construct_change_message, + display_for_value, flatten_fieldsets, get_deleted_objects, lookup_spawns_duplicates, @@ -74,6 +75,7 @@ IS_POPUP_VAR = "_popup" SOURCE_MODEL_VAR = "_source_model" TO_FIELD_VAR = "_to_field" IS_FACETS_VAR = "_facets" +EMPTY_VALUE_STRING = "-" class ShowFacets(enum.Enum): @@ -1394,10 +1396,13 @@ class ModelAdmin(BaseModelAdmin): current_app=self.admin_site.name, ) # Add a link to the object's change form if the user can edit the obj. + obj_display = display_for_value(str(obj), EMPTY_VALUE_STRING) if self.has_change_permission(request, obj): - obj_repr = format_html('<a href="{}">{}</a>', urlquote(obj_url), obj) + obj_repr = format_html( + '<a href="{}">{}</a>', urlquote(obj_url), obj_display + ) else: - obj_repr = str(obj) + obj_repr = obj_display msg_dict = { "name": opts.verbose_name, "obj": obj_repr, @@ -1547,9 +1552,12 @@ class ModelAdmin(BaseModelAdmin): preserved_filters = self.get_preserved_filters(request) preserved_qsl = self._get_preserved_qsl(request, preserved_filters) + obj_display = display_for_value(str(obj), EMPTY_VALUE_STRING) msg_dict = { "name": opts.verbose_name, - "obj": format_html('<a href="{}">{}</a>', urlquote(request.path), obj), + "obj": format_html( + '<a href="{}">{}</a>', urlquote(request.path), obj_display + ), } if "_continue" in request.POST: msg = format_html( @@ -1728,7 +1736,7 @@ class ModelAdmin(BaseModelAdmin): _("The %(name)s ā%(obj)sā was deleted successfully.") % { "name": self.opts.verbose_name, - "obj": obj_display, + "obj": display_for_value(str(obj_display), EMPTY_VALUE_STRING), }, messages.SUCCESS, ) @@ -1951,7 +1959,9 @@ class ModelAdmin(BaseModelAdmin): context = { **self.admin_site.each_context(request), "title": title % self.opts.verbose_name, - "subtitle": str(obj) if obj else None, + "subtitle": ( + display_for_value(str(obj), EMPTY_VALUE_STRING) if obj else None + ), "adminform": admin_form, "object_id": object_id, "original": obj, @@ -2252,6 +2262,7 @@ class ModelAdmin(BaseModelAdmin): "subtitle": None, "object_name": object_name, "object": obj, + "escaped_object": display_for_value(str(obj), EMPTY_VALUE_STRING), "deleted_objects": deleted_objects, "model_count": dict(model_count).items(), "perms_lacking": perms_needed, @@ -2300,7 +2311,8 @@ class ModelAdmin(BaseModelAdmin): context = { **self.admin_site.each_context(request), - "title": _("Change history: %s") % obj, + "title": _("Change history: %s") + % display_for_value(str(obj), EMPTY_VALUE_STRING), "subtitle": None, "action_list": page_obj, "page_range": page_range, |
