Работа с полями длительности в моделях Django: методы и примеры

Если в Django вы хотите сохранить продолжительность или период времени в поле модели, вы можете использовать DurationField. Это поле предназначено для хранения продолжительности в форме объекта timedelta, представляющего разницу между двумя объектами datetime.

Вот несколько методов, которые можно использовать с DurationFieldв моделях Django, а также примеры кода:

  1. Сохранение продолжительности:

    from django.db import models
    from datetime import timedelta
    
    class MyModel(models.Model):
       duration = models.DurationField()
  2. Присвоение продолжительности полю:

    my_model = MyModel()
    my_model.duration = timedelta(days=5, hours=3, minutes=30)
    my_model.save()
  3. Получение продолжительности из поля:

    my_model = MyModel.objects.get(pk=1)
    duration = my_model.duration
  4. Выполнение вычислений с длительностью:

    my_model1 = MyModel.objects.get(pk=1)
    my_model2 = MyModel.objects.get(pk=2)
    duration_sum = my_model1.duration + my_model2.duration
  5. Фильтрация моделей по продолжительности:

    from django.db.models import DurationField
    from datetime import timedelta
    
    MyModel.objects.filter(duration__gte=timedelta(hours=10))
  6. Общая продолжительность:

    from django.db.models import Sum
    
    total_duration = MyModel.objects.aggregate(total_duration=Sum('duration'))
  7. Форматирование длительности отображения:

    my_model = MyModel.objects.get(pk=1)
    formatted_duration = str(my_model.duration)