Поле TimeField

Поле TimeField предназначено для хранения времени в формате часы:минуты:секунды. В базе данных оно преобразуется в тип TIME. Это поле полезно для хранения режима работы, времени начала события или продолжительности в формате времени. При инициализации можно указать дополнительные параметры: auto_now - автоматически устанавливает текущее время при создании записи, auto_now_add - автоматически устанавливает время при первом сохранении. Оба параметра принимают значения True или False.

Синтаксис

pythonfrom django.db import models

class YourModel(models.Model):
  time_field = models.TimeField(**options)

Пример . Модель с TimeField

Создадим модель для расписания с полем времени начала:

pythonfrom django.db import models

class Schedule(models.Model):
  name = models.CharField(max_length=100)
  start_time = models.TimeField()
  end_time = models.TimeField()
  created_at = models.TimeField(auto_now_add=True)

Создание записи с указанием времени

Создадим объект модели с указанием конкретного времени:

pythonfrom myapp.models import Schedule
from datetime import time

schedule = Schedule(
  name="Morning session",
  start_time=time(9, 0, 0),
  end_time=time(12, 30, 0)
)
schedule.save()

Получение записей по времени

Отфильтруем расписания, которые начинаются до 10 часов утра:

pythonfrom myapp.models import Schedule
from datetime import time

morning_schedules = Schedule.objects.filter(start_time__lt=time(10, 0, 0))
for schedule in morning_schedules:
  print(schedule.name)

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

python"Morning session"
"Early bird"

Сравнение времени

Найдем записи, у которых время окончания между 12 и 18 часами:

pythonfrom myapp.models import Schedule
from datetime import time

res = Schedule.objects.filter(
  end_time__gte=time(12, 0, 0),
  end_time__lte=time(18, 0, 0)
)
for schedule in res:
  print(schedule.name)

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

python"Morning session"
"Afternoon workshop"

Получение текущего времени

Используем параметр auto_now_add для автоматической записи времени создания:

pythonfrom django.db import models

class Event(models.Model):
  title = models.CharField(max_length=200)
  event_time = models.TimeField(auto_now_add=True)

При создании объекта поле event_time автоматически заполнится текущим временем сервера:

pythonfrom myapp.models import Event

event = Event(title="Team meeting")
event.save()
print(event.event_time)

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

python"14:30:00"

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

  • поле DateField,
    которое хранит дату без времени
  • поле DateTimeField,
    которое хранит дату и время вместе
  • поле DurationField,
    которое хранит промежутки времени
  • поле PositiveIntegerField,
    которое хранит целые положительные числа