summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2024-08-29 19:01:10 +0200
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2024-08-30 20:52:41 +0200
commit62039659603ca0fa2df796d1732c4b414549c52b (patch)
tree2354f8510a461ef60a7c410d74da7aac6f17628d
parent26c06671d9f9ff679be5e290b0752a45e582ce0c (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.html2
-rw-r--r--django/contrib/admin/templates/admin/edit_inline/stacked.html2
-rw-r--r--django/contrib/admin/templates/admin/includes/fieldset.html2
-rw-r--r--docs/releases/5.1.1.txt3
-rw-r--r--tests/admin_inlines/tests.py7
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.