Skip to content

Commit b665a67

Browse files
Fixed #36788 -- Fixed horizontal form field alignment under <fieldset> in the admin.
Thanks Antoliny for the review. Regression in 4187da2.
1 parent 986f7f2 commit b665a67

4 files changed

Lines changed: 41 additions & 3 deletions

File tree

django/contrib/admin/static/admin/css/forms.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ fieldset .inline-heading,
9393
/* ALIGNED FIELDSETS */
9494

9595
.aligned fieldset {
96-
width: 100%;
96+
flex-grow: 1;
9797
border-top: none;
9898
}
9999

docs/releases/6.0.2.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ Bugfixes
1515
to wrap below the changelist when filter elements contained long text
1616
(:ticket:`36850`).
1717

18+
* Fixed a visual regression in Django 6.0 for admin form fields grouped under a
19+
``<fieldset>`` aligned horizontally (:ticket:`36788`).
20+
1821
* Fixed a regression in Django 6.0 where ``auto_now_add`` field values were not
1922
populated during ``INSERT`` operations, due to incorrect parameters passed to
2023
``field.pre_save()`` (:ticket:`36847`).

tests/admin_views/admin.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1198,6 +1198,18 @@ class CamelCaseAdmin(admin.ModelAdmin):
11981198

11991199
class CourseAdmin(admin.ModelAdmin):
12001200
radio_fields = {"difficulty": admin.VERTICAL}
1201+
fieldsets = (
1202+
(
1203+
None,
1204+
{
1205+
"fields": (
1206+
("title", "difficulty"),
1207+
("materials", "start_datetime"),
1208+
("categories"),
1209+
),
1210+
},
1211+
),
1212+
)
12011213

12021214

12031215
site = admin.AdminSite(name="admin")

tests/admin_views/tests.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7065,10 +7065,10 @@ def test_use_fieldset_fields_render(self):
70657065
title="Django Class", materials="django_documents"
70667066
)
70677067
expected_legend_tags_text = [
7068-
"Materials:",
70697068
"Difficulty:",
7070-
"Categories:",
7069+
"Materials:",
70717070
"Start datetime:",
7071+
"Categories:",
70727072
]
70737073
url = reverse("admin:admin_views_course_change", args=(course.pk,))
70747074
self.selenium.get(self.live_server_url + url)
@@ -7079,6 +7079,29 @@ def test_use_fieldset_fields_render(self):
70797079
legend = fieldset.find_element(By.TAG_NAME, "legend")
70807080
self.assertEqual(legend.text, expected_legend_tags_text[index])
70817081

7082+
@screenshot_cases(["desktop_size", "mobile_size", "rtl", "dark", "high_contrast"])
7083+
def test_use_fieldset_with_grouped_fields(self):
7084+
from selenium.webdriver.common.by import By
7085+
7086+
self.admin_login(
7087+
username="super", password="secret", login_url=reverse("admin:index")
7088+
)
7089+
self.selenium.get(
7090+
self.live_server_url + reverse("admin:admin_views_course_add")
7091+
)
7092+
multiline = self.selenium.find_element(
7093+
By.CSS_SELECTOR, "#content-main .field-difficulty, .form-multiline"
7094+
)
7095+
# Two field boxes.
7096+
field_boxes = multiline.find_elements(By.CSS_SELECTOR, "div > div.fieldBox")
7097+
self.assertEqual(len(field_boxes), 2)
7098+
# One of them is under a <fieldset>.
7099+
under_fieldset = multiline.find_elements(
7100+
By.CSS_SELECTOR, "fieldset > div > div.fieldBox"
7101+
)
7102+
self.assertEqual(len(under_fieldset), 1)
7103+
self.take_screenshot("horizontal_fieldset")
7104+
70827105
@screenshot_cases(["desktop_size", "mobile_size", "rtl", "dark", "high_contrast"])
70837106
@override_settings(MESSAGE_LEVEL=10)
70847107
def test_messages(self):

0 commit comments

Comments
 (0)