{% endif %}
diff --git a/django/contrib/admin/templates/admin/change_list.html b/django/contrib/admin/templates/admin/change_list.html
index cf96df9fe2..b0b4c31619 100644
--- a/django/contrib/admin/templates/admin/change_list.html
+++ b/django/contrib/admin/templates/admin/change_list.html
@@ -39,16 +39,15 @@
{% block coltype %}{% endblock %}
-{% block object-tools %}
-
+ {% block object-tools %}
+
+ {% endblock %}
{% if cl.formset and cl.formset.errors %}
{% blocktranslate count counter=cl.formset.total_error_count %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktranslate %}
diff --git a/docs/releases/5.2.1.txt b/docs/releases/5.2.1.txt
index 81fb750847..caebde7f02 100644
--- a/docs/releases/5.2.1.txt
+++ b/docs/releases/5.2.1.txt
@@ -40,3 +40,7 @@ Bugfixes
* Fixed a regression in Django 5.2 where the password validation error message
from ``MinimumLengthValidator`` was not translated when using non-English
locales (:ticket:`36314`).
+
+* Fixed a regression in Django 5.2 that caused the ``object-tools`` block to be
+ rendered twice when using custom admin templates with overridden blocks due
+ to changes in the base admin page block structure (:ticket:`36331`).
diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py
index f814d9b3ab..f0d7b41b64 100644
--- a/tests/admin_views/tests.py
+++ b/tests/admin_views/tests.py
@@ -127,7 +127,6 @@ from .models import (
Song,
State,
Story,
- Subscriber,
SuperSecretHideout,
SuperVillain,
Telegram,
@@ -6859,24 +6858,6 @@ class SeleniumTests(AdminSeleniumTestCase):
name_input_value = name_input.get_attribute("value")
self.assertEqual(name_input_value, "Test section 1")
- @screenshot_cases(["desktop_size", "mobile_size", "rtl", "dark", "high_contrast"])
- def test_long_object_str_on_change_view(self):
- from selenium.webdriver.common.by import By
-
- self.admin_login(
- username="super", password="secret", login_url=reverse("admin:index")
- )
- s = Subscriber.objects.create(name="a " * 40, email="b " * 80)
- self.selenium.get(
- self.live_server_url
- + reverse("admin:admin_views_subscriber_change", args=(s.pk,))
- )
- object_tools = self.selenium.find_elements(
- By.CSS_SELECTOR, "div#content ul.object-tools li"
- )
- self.assertGreater(len(object_tools), 0)
- self.take_screenshot("not-overwrap")
-
@override_settings(ROOT_URLCONF="admin_views.urls")
class ReadonlyTest(AdminFieldExtractionMixin, TestCase):