Fixed #36788 -- Fixed horizontal form field alignment under <fieldset> in the admin.

Thanks Antoliny for the review.

Regression in 4187da258f.
This commit is contained in:
Jacob Walls
2026-01-23 15:10:31 -05:00
parent 986f7f2098
commit b665a67d61
4 changed files with 41 additions and 3 deletions

View File

@@ -93,7 +93,7 @@ fieldset .inline-heading,
/* ALIGNED FIELDSETS */
.aligned fieldset {
width: 100%;
flex-grow: 1;
border-top: none;
}

View File

@@ -15,6 +15,9 @@ Bugfixes
to wrap below the changelist when filter elements contained long text
(:ticket:`36850`).
* Fixed a visual regression in Django 6.0 for admin form fields grouped under a
``<fieldset>`` aligned horizontally (:ticket:`36788`).
* Fixed a regression in Django 6.0 where ``auto_now_add`` field values were not
populated during ``INSERT`` operations, due to incorrect parameters passed to
``field.pre_save()`` (:ticket:`36847`).

View File

@@ -1198,6 +1198,18 @@ class CamelCaseAdmin(admin.ModelAdmin):
class CourseAdmin(admin.ModelAdmin):
radio_fields = {"difficulty": admin.VERTICAL}
fieldsets = (
(
None,
{
"fields": (
("title", "difficulty"),
("materials", "start_datetime"),
("categories"),
),
},
),
)
site = admin.AdminSite(name="admin")

View File

@@ -7065,10 +7065,10 @@ class SeleniumTests(AdminSeleniumTestCase):
title="Django Class", materials="django_documents"
)
expected_legend_tags_text = [
"Materials:",
"Difficulty:",
"Categories:",
"Materials:",
"Start datetime:",
"Categories:",
]
url = reverse("admin:admin_views_course_change", args=(course.pk,))
self.selenium.get(self.live_server_url + url)
@@ -7079,6 +7079,29 @@ class SeleniumTests(AdminSeleniumTestCase):
legend = fieldset.find_element(By.TAG_NAME, "legend")
self.assertEqual(legend.text, expected_legend_tags_text[index])
@screenshot_cases(["desktop_size", "mobile_size", "rtl", "dark", "high_contrast"])
def test_use_fieldset_with_grouped_fields(self):
from selenium.webdriver.common.by import By
self.admin_login(
username="super", password="secret", login_url=reverse("admin:index")
)
self.selenium.get(
self.live_server_url + reverse("admin:admin_views_course_add")
)
multiline = self.selenium.find_element(
By.CSS_SELECTOR, "#content-main .field-difficulty, .form-multiline"
)
# Two field boxes.
field_boxes = multiline.find_elements(By.CSS_SELECTOR, "div > div.fieldBox")
self.assertEqual(len(field_boxes), 2)
# One of them is under a <fieldset>.
under_fieldset = multiline.find_elements(
By.CSS_SELECTOR, "fieldset > div > div.fieldBox"
)
self.assertEqual(len(under_fieldset), 1)
self.take_screenshot("horizontal_fieldset")
@screenshot_cases(["desktop_size", "mobile_size", "rtl", "dark", "high_contrast"])
@override_settings(MESSAGE_LEVEL=10)
def test_messages(self):