РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
457 of 818 menu

SplitHiddenDateTimeWidget

Виджет SplitHiddenDateTimeWidget предназначен для работы с полями типа SplitDateTimeField в формах Django. Он отображает дату и время как два отдельных скрытых поля ввода с идентификаторами _date и _time. Данный виджет полезен в ситуациях, когда необходимо передавать значение даты и времени в скрытом виде, например, для автоматического заполнения или для использования в JavaScript-логике без отображения на странице. Виджет наследуется от базового класса MultiWidget и использует подвиджеты HiddenInput для каждого компонента.

Синтаксис

from django import forms from django.forms.widgets import SplitHiddenDateTimeWidget class MyForm(forms.Form): datetime_field = forms.SplitDateTimeField(widget=SplitHiddenDateTimeWidget)

Виджет принимает следующие параметры при инициализации:

attrs - словарь с HTML-атрибутами для полей ввода. Применяется ко всем подвиджетам.

date_attrs - словарь с HTML-атрибутами для поля даты. Переопределяет attrs для поля даты.

time_attrs - словарь с HTML-атрибутами для поля времени. Переопределяет attrs для поля времени.

Пример . С формой

Создадим форму с полем даты и времени, использующим виджет SplitHiddenDateTimeWidget, и отобразим её в шаблоне:

from django import forms from django.forms.widgets import SplitHiddenDateTimeWidget class EventForm(forms.Form): name = forms.CharField(max_length=100) event_datetime = forms.SplitDateTimeField( widget=SplitHiddenDateTimeWidget, initial="2026-01-01 12:30:00" )

Результат рендеринга формы в шаблоне:

<input type="hidden" name="event_datetime_0" value="2026-01-01"> <input type="hidden" name="event_datetime_1" value="12:30:00">

Как видно, виджет создаёт два скрытых поля с суффиксами _0 для даты и _1 для времени.

Пример . С кастомными атрибутами

Передадим дополнительные HTML-атрибуты для скрытых полей, чтобы использовать их в JavaScript:

from django import forms from django.forms.widgets import SplitHiddenDateTimeWidget class EventForm(forms.Form): event_datetime = forms.SplitDateTimeField( widget=SplitHiddenDateTimeWidget( attrs={"data-type": "hidden-datetime"}, date_attrs={"class": "hidden-date"}, time_attrs={"class": "hidden-time"} ) )

Результат рендеринга с добавленными атрибутами:

<input type="hidden" name="event_datetime_0" value="None" data-type="hidden-datetime" class="hidden-date"> <input type="hidden" name="event_datetime_1" value="None" data-type="hidden-datetime" class="hidden-time">

В этом примере оба поля получили общий атрибут data-type, а также индивидуальные классы для раздельной обработки.

Пример . С обработкой данных

Рассмотрим, как работает валидация и обработка данных, переданных через скрытые поля:

from django import forms from django.forms.widgets import SplitHiddenDateTimeWidget from datetime import datetime class EventForm(forms.Form): event_datetime = forms.SplitDateTimeField( widget=SplitHiddenDateTimeWidget ) # Имитация отправки данных post_data = { "event_datetime_0": "2026-06-15", "event_datetime_1": "18:45:30" } form = EventForm(post_data) if form.is_valid(): res = form.cleaned_data["event_datetime"] print(res)

Результат выполнения кода:

"2026-06-15 18:45:30"

Данные из двух скрытых полей корректно объединяются в объект datetime.

Смотрите также

  • виджет SplitDateTimeWidget,
    который отображает дату и время как видимые поля ввода
  • виджет HiddenInput,
    который представляет собой скрытое поле ввода
  • виджет MultiWidget,
    являющийся базовым классом для составных виджетов
  • поле SplitDateTimeField,
    которое используется для валидации разделённых даты и времени
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить