summaryrefslogtreecommitdiff
path: root/django/contrib/admin/widgets.py
diff options
context:
space:
mode:
authorantoliny0919 <antoliny0919@gmail.com>2025-07-28 07:59:26 +0900
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2025-08-19 16:35:56 +0200
commit4187da258fe212d494cb578a0bc2b52c4979ab95 (patch)
tree67f6205a16b1f6785f1ed4e06348d332c36a50f3 /django/contrib/admin/widgets.py
parentad4a9e0f3b1de261409bc083aa49dba705531824 (diff)
Fixed #35892 -- Supported Widget.use_fieldset in admin forms.
Diffstat (limited to 'django/contrib/admin/widgets.py')
-rw-r--r--django/contrib/admin/widgets.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/django/contrib/admin/widgets.py b/django/contrib/admin/widgets.py
index a601fc2667..124f3307af 100644
--- a/django/contrib/admin/widgets.py
+++ b/django/contrib/admin/widgets.py
@@ -49,7 +49,16 @@ class FilteredSelectMultiple(forms.SelectMultiple):
return context
-class BaseAdminDateWidget(forms.DateInput):
+class DateTimeWidgetContextMixin:
+ def get_context(self, name, value, attrs):
+ context = super().get_context(name, value, attrs)
+ context["widget"]["attrs"][
+ "aria-describedby"
+ ] = f"id_{name}_timezone_warning_helptext"
+ return context
+
+
+class BaseAdminDateWidget(DateTimeWidgetContextMixin, forms.DateInput):
class Media:
js = [
"admin/js/calendar.js",
@@ -65,7 +74,7 @@ class AdminDateWidget(BaseAdminDateWidget):
template_name = "admin/widgets/date.html"
-class BaseAdminTimeWidget(forms.TimeInput):
+class BaseAdminTimeWidget(DateTimeWidgetContextMixin, forms.TimeInput):
class Media:
js = [
"admin/js/calendar.js",
@@ -98,8 +107,13 @@ class AdminSplitDateTime(forms.SplitDateTimeWidget):
context = super().get_context(name, value, attrs)
context["date_label"] = _("Date:")
context["time_label"] = _("Time:")
+ for widget in context["widget"]["subwidgets"]:
+ widget["attrs"]["aria-describedby"] = f"id_{name}_timezone_warning_helptext"
return context
+ def id_for_label(self, id_):
+ return id_
+
class AdminRadioSelect(forms.RadioSelect):
template_name = "admin/widgets/radio.html"
@@ -282,6 +296,7 @@ class RelatedFieldWidgetWrapper(forms.Widget):
self.can_view_related = not multiple and can_view_related
# To check if the related object is registered with this AdminSite.
self.admin_site = admin_site
+ self.use_fieldset = True
def __deepcopy__(self, memo):
obj = copy.copy(self)