diff --git a/django/contrib/admin/templates/admin/change_form.html b/django/contrib/admin/templates/admin/change_form.html index 31ff5d6c10..09ef954e5c 100644 --- a/django/contrib/admin/templates/admin/change_form.html +++ b/django/contrib/admin/templates/admin/change_form.html @@ -47,7 +47,7 @@ {% block field_sets %} {% for fieldset in adminform %} - {% include "admin/includes/fieldset.html" with heading_level=2 id_suffix=forloop.counter0 %} + {% include "admin/includes/fieldset.html" with heading_level=2 prefix="fieldset" id_prefix=0 id_suffix=forloop.counter0 %} {% endfor %} {% endblock %} diff --git a/django/contrib/admin/templates/admin/edit_inline/stacked.html b/django/contrib/admin/templates/admin/edit_inline/stacked.html index 73f459ee47..a6939f4ea2 100644 --- a/django/contrib/admin/templates/admin/edit_inline/stacked.html +++ b/django/contrib/admin/templates/admin/edit_inline/stacked.html @@ -26,7 +26,7 @@ {% with parent_counter=forloop.counter0 %} {% for fieldset in inline_admin_form %} - {% include "admin/includes/fieldset.html" with heading_level=4 id_prefix=parent_counter id_suffix=forloop.counter0 %} + {% include "admin/includes/fieldset.html" with heading_level=4 prefix=fieldset.formset.prefix id_prefix=parent_counter id_suffix=forloop.counter0 %} {% endfor %} {% endwith %} diff --git a/django/contrib/admin/templates/admin/includes/fieldset.html b/django/contrib/admin/templates/admin/includes/fieldset.html index b4eef47547..a9d3f92702 100644 --- a/django/contrib/admin/templates/admin/includes/fieldset.html +++ b/django/contrib/admin/templates/admin/includes/fieldset.html @@ -1,4 +1,4 @@ -{% with prefix=fieldset.formset.prefix|default:"fieldset" id_prefix=id_prefix|default:"0" id_suffix=id_suffix|default:"0" name=fieldset.name|default:""|slugify %} +{% with name=fieldset.name|default:""|slugify %}
{% if name %} {% if fieldset.is_collapsible %}
{% endif %} diff --git a/docs/releases/5.1.1.txt b/docs/releases/5.1.1.txt index b1c9ec4176..743f2753a8 100644 --- a/docs/releases/5.1.1.txt +++ b/docs/releases/5.1.1.txt @@ -35,3 +35,6 @@ Bugfixes * Restored, following a regression in Django 5.1, the ability to override the timezone and role setting behavior used within the ``init_connection_state`` method of the PostgreSQL backend (:ticket:`35688`). + +* Fixed a bug in Django 5.1 where variable lookup errors were logged when + rendering admin fieldsets (:ticket:`35716`). diff --git a/tests/admin_inlines/tests.py b/tests/admin_inlines/tests.py index 620aac10a8..cba8db83d7 100644 --- a/tests/admin_inlines/tests.py +++ b/tests/admin_inlines/tests.py @@ -1768,6 +1768,13 @@ class TestInlineWithFieldsets(TestDataMixin, TestCase): def setUp(self): self.client.force_login(self.superuser) + @override_settings(DEBUG=True) + def test_fieldset_context_fully_set(self): + url = reverse("admin:admin_inlines_photographer_add") + with self.assertRaisesMessage(AssertionError, "no logs"): + with self.assertLogs("django.template", "DEBUG"): + self.client.get(url) + def test_inline_headings(self): response = self.client.get(reverse("admin:admin_inlines_photographer_add")) # Page main title.