Поле SplitDateTimeField

Поле SplitDateTimeField применяется в формах Django для обработки даты и времени, которые вводятся пользователем в двух отдельных полях ввода. Оно наследуется от MultiValueField и по умолчанию использует виджет SplitDateTimeWidget. Это поле автоматически валидирует введённые значения и объединяет их в единый объект datetime.datetime. Поле принимает два аргумента: input_date_formats и input_time_formats, которые позволяют задать форматы ввода для даты и времени соответственно. По умолчанию используются стандартные форматы Django для даты и времени. Поле также поддерживает все стандартные аргументы для полей форм: required, label, initial, help_text и другие.

Синтаксис

pythonfrom 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 для ввода даты и времени события:

pythonfrom 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"
  )

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

python"EventForm rendered with separate date and time input fields"

Пример

Давайте обработаем данные, введённые в форму с полем SplitDateTimeField:

pythonfrom 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)

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

python"2026-09-07 14:30:00"

Пример

Давайте зададим свои форматы ввода для поля SplitDateTimeField:

pythonfrom 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)

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

python"2026-09-07 14:30:00"

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

  • поле DateTimeField,
    которое принимает дату и время в одном поле ввода
  • поле DateField,
    которое предназначено только для ввода даты
  • поле TimeField,
    которое предназначено только для ввода времени
  • виджет SplitDateTimeWidget,
    который используется по умолчанию для этого поля