diff options
| author | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2024-08-29 19:01:10 +0200 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2024-08-30 20:52:41 +0200 |
| commit | 62039659603ca0fa2df796d1732c4b414549c52b (patch) | |
| tree | 2354f8510a461ef60a7c410d74da7aac6f17628d | |
| parent | 26c06671d9f9ff679be5e290b0752a45e582ce0c (diff) | |
[5.1.x] Fixed #35716 -- Fixed VariableDoesNotExist when rendering admin fieldsets.
Regression in 01ed59f753139afb514170ee7f7384c155ecbc2d.
Thank you to Fábio Domingues and Marijke Luttekes for the report,
and thank you to Natalia Bidart for the review.
Backport of fd1dd767783b5a7ec1a594fcc5885e7e4178dd26 from main.
| -rw-r--r-- | django/contrib/admin/templates/admin/change_form.html | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin/edit_inline/stacked.html | 2 | ||||
| -rw-r--r-- | django/contrib/admin/templates/admin/includes/fieldset.html | 2 | ||||
| -rw-r--r-- | docs/releases/5.1.1.txt | 3 | ||||
| -rw-r--r-- | tests/admin_inlines/tests.py | 7 |
5 files changed, 13 insertions, 3 deletions
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 %} <fieldset class="module aligned {{ fieldset.classes }}"{% if name %} aria-labelledby="{{ prefix }}-{{ id_prefix}}-{{ name }}-{{ id_suffix }}-heading"{% endif %}> {% if name %} {% if fieldset.is_collapsible %}<details><summary>{% 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 04f0a37e02..2c148a49f0 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. |
