Поле SplitDateTimeField
Поле SplitDateTimeField применяется в формах Django для обработки даты и времени,
которые вводятся пользователем в двух отдельных полях ввода.
Оно наследуется от MultiValueField и по умолчанию использует виджет SplitDateTimeWidget.
Это поле автоматически валидирует введённые значения и объединяет их в единый объект datetime.datetime.
Поле принимает два аргумента: input_date_formats и input_time_formats,
которые позволяют задать форматы ввода для даты и времени соответственно.
По умолчанию используются стандартные форматы Django для даты и времени.
Поле также поддерживает все стандартные аргументы для полей форм: required, label, initial, help_text и другие.
Синтаксис
from django import forms
class MyForm(forms.Form):
event_datetime = forms.SplitDateTimeField(
label="Event Date and Time",
required=True,
initial=datetime.now(),
help_text="Enter date and time separately"
)
Пример
Давайте создадим форму с полем SplitDateTimeField для ввода даты и времени события:
from django import forms
from datetime import datetime
class EventForm(forms.Form):
name = forms.CharField(max_length=100)
event_datetime = forms.SplitDateTimeField(
label="Event date and time",
initial=datetime(2026, 9, 7, 14, 30),
help_text="Enter date and time separately"
)
Результат выполнения кода при рендеринге формы:
"EventForm rendered with separate date and time input fields"
Пример
Давайте обработаем данные, введённые в форму с полем SplitDateTimeField:
from django import forms
from datetime import datetime
class EventForm(forms.Form):
name = forms.CharField(max_length=100)
event_datetime = forms.SplitDateTimeField()
# Assume POST data with date and time parts
post_data = {
'name': 'Conference',
'event_datetime_0': '2026-09-07',
'event_datetime_1': '14:30:00'
}
form = EventForm(post_data)
if form.is_valid():
res = form.cleaned_data['event_datetime']
print(res)
Результат выполнения кода:
"2026-09-07 14:30:00"
Пример
Давайте зададим свои форматы ввода для поля SplitDateTimeField:
from django import forms
from datetime import datetime
class CustomEventForm(forms.Form):
name = forms.CharField(max_length=100)
event_datetime = forms.SplitDateTimeField(
input_date_formats=['%d.%m.%Y'],
input_time_formats=['%H:%M'],
label="Event date and time",
help_text="Use DD.MM.YYYY for date and HH:MM for time"
)
# POST data with custom formats
post_data = {
'name': 'Workshop',
'event_datetime_0': '07.09.2026',
'event_datetime_1': '14:30'
}
form = CustomEventForm(post_data)
if form.is_valid():
res = form.cleaned_data['event_datetime']
print(res)
Результат выполнения кода:
"2026-09-07 14:30:00"
Смотрите также
-
поле
DateTimeField,
которое принимает дату и время в одном поле ввода -
поле
DateField,
которое предназначено только для ввода даты -
поле
TimeField,
которое предназначено только для ввода времени -
виджет
SplitDateTimeWidget,
который используется по умолчанию для этого поля