diff options
| author | antoliny0919 <antoliny0919@gmail.com> | 2025-07-28 07:59:26 +0900 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2025-08-19 16:35:56 +0200 |
| commit | 4187da258fe212d494cb578a0bc2b52c4979ab95 (patch) | |
| tree | 67f6205a16b1f6785f1ed4e06348d332c36a50f3 /django/contrib/admin/widgets.py | |
| parent | ad4a9e0f3b1de261409bc083aa49dba705531824 (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.py | 19 |
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) |
