Skip to content

Commit 9fa2d23

Browse files
committed
[5.1.x] Fixed #35876 -- Displayed non-ASCII fieldset names when rendering ModelAdmin.fieldsets.
Thank you to Namhong Kim for the report, and to Mariusz Felisiak and Marijke Luttekes for the review. Regression in 01ed59f. Backport of 2c029c7 from main.
1 parent 5045dab commit 9fa2d23

File tree

5 files changed

+23
-8
lines changed

5 files changed

+23
-8
lines changed

‎django/contrib/admin/templates/admin/includes/fieldset.html

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
{% with name=fieldset.name|default:""|slugify %}
2-
<fieldset class="module aligned {{ fieldset.classes }}"{% if name %} aria-labelledby="{{ prefix }}-{{ id_prefix}}-{{ name }}-{{ id_suffix }}-heading"{% endif %}>
3-
{% if name %}
1+
<fieldset class="module aligned {{ fieldset.classes }}"{% if fieldset.name %} aria-labelledby="{{ prefix }}-{{ id_prefix}}-{{ id_suffix }}-heading"{% endif %}>
2+
{% if fieldset.name %}
43
{% if fieldset.is_collapsible %}<details><summary>{% endif %}
5-
<h{{ heading_level|default:2 }} id="{{ prefix }}-{{ id_prefix}}-{{ name }}-{{ id_suffix }}-heading" class="fieldset-heading">{{ fieldset.name }}</h{{ heading_level|default:2 }}>
4+
<h{{ heading_level|default:2 }} id="{{ prefix }}-{{ id_prefix}}-{{ id_suffix }}-heading" class="fieldset-heading">{{ fieldset.name }}</h{{ heading_level|default:2 }}>
65
{% if fieldset.is_collapsible %}</summary>{% endif %}
76
{% endif %}
87
{% if fieldset.description %}
@@ -36,6 +35,5 @@
3635
{% if not line.fields|length == 1 %}</div>{% endif %}
3736
</div>
3837
{% endfor %}
39-
{% if name and fieldset.is_collapsible %}</details>{% endif %}
38+
{% if fieldset.name and fieldset.is_collapsible %}</details>{% endif %}
4039
</fieldset>
41-
{% endwith %}

‎docs/releases/5.1.3.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,6 @@ Bugfixes
1717

1818
* Fixed a regression in Django 5.1 that prevented the use of DB-IP databases
1919
with :class:`~django.contrib.gis.geoip2.GeoIP2` (:ticket:`35841`).
20+
21+
* Fixed a regression in Django 5.1 where non-ASCII fieldset names were not
22+
displayed when rendering admin fieldsets (:ticket:`35876`).

‎tests/admin_inlines/tests.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1785,7 +1785,7 @@ def test_inline_headings(self):
17851785
# The second and third have the same "Advanced options" name, but the
17861786
# second one has the "collapse" class.
17871787
for x, classes in ((1, ""), (2, "collapse")):
1788-
heading_id = f"fieldset-0-advanced-options-{x}-heading"
1788+
heading_id = f"fieldset-0-{x}-heading"
17891789
with self.subTest(heading_id=heading_id):
17901790
self.assertContains(
17911791
response,
@@ -1830,7 +1830,7 @@ def test_inline_headings(self):
18301830
# Every fieldset defined for an inline's form.
18311831
for z, fieldset in enumerate(inline_admin_form):
18321832
if fieldset.name:
1833-
heading_id = f"{prefix}-{y}-details-{z}-heading"
1833+
heading_id = f"{prefix}-{y}-{z}-heading"
18341834
self.assertContains(
18351835
response,
18361836
f'<fieldset class="module aligned {fieldset.classes}" '

‎tests/admin_views/admin.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ class ArticleAdmin(ArticleAdminWithExtraUrl):
237237
"Some other fields",
238238
{"classes": ("wide",), "fields": ("date", "section", "sub_section")},
239239
),
240+
("이름", {"fields": ("another_section",)}),
240241
)
241242

242243
# These orderings aren't particularly useful but show that expressions can

‎tests/admin_views/tests.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2508,6 +2508,19 @@ def test_add_view(self):
25082508
self.assertContains(
25092509
response, '<input type="submit" value="Save and view" name="_continue">'
25102510
)
2511+
self.assertContains(
2512+
response,
2513+
'<h2 id="fieldset-0-0-heading" class="fieldset-heading">Some fields</h2>',
2514+
)
2515+
self.assertContains(
2516+
response,
2517+
'<h2 id="fieldset-0-1-heading" class="fieldset-heading">'
2518+
"Some other fields</h2>",
2519+
)
2520+
self.assertContains(
2521+
response,
2522+
'<h2 id="fieldset-0-2-heading" class="fieldset-heading">이름</h2>',
2523+
)
25112524
post = self.client.post(
25122525
reverse("admin:admin_views_article_add"), add_dict, follow=False
25132526
)

0 commit comments

Comments
 (0)