Поле TimeField
Поле TimeField предназначено для хранения времени в формате часы:минуты:секунды.
В базе данных оно преобразуется в тип TIME. Это поле полезно для хранения
режима работы, времени начала события или продолжительности в формате времени.
При инициализации можно указать дополнительные параметры:
auto_now - автоматически устанавливает текущее время при создании записи,
auto_now_add - автоматически устанавливает время при первом сохранении.
Оба параметра принимают значения True или False.
Синтаксис
from django.db import models
class YourModel(models.Model):
time_field = models.TimeField(**options)
Пример . Модель с TimeField
Создадим модель для расписания с полем времени начала:
from 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)
Создание записи с указанием времени
Создадим объект модели с указанием конкретного времени:
from 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 часов утра:
from 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)
Результат выполнения кода:
"Morning session"
"Early bird"
Сравнение времени
Найдем записи, у которых время окончания между 12 и 18 часами:
from 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)
Результат выполнения кода:
"Morning session"
"Afternoon workshop"
Получение текущего времени
Используем параметр auto_now_add для автоматической записи времени создания:
from django.db import models
class Event(models.Model):
title = models.CharField(max_length=200)
event_time = models.TimeField(auto_now_add=True)
При создании объекта поле event_time автоматически заполнится текущим временем сервера:
from myapp.models import Event
event = Event(title="Team meeting")
event.save()
print(event.event_time)
Результат выполнения кода:
"14:30:00"
Смотрите также
-
поле
DateField,
которое хранит дату без времени -
поле
DateTimeField,
которое хранит дату и время вместе -
поле
DurationField,
которое хранит промежутки времени -
поле
PositiveIntegerField,
которое хранит целые положительные числа