Набор запросов Django: Продолжительность из двух DateTimeField()

В моем проекте Django у меня есть такая модель -

class Task(models.Model):
    ticket_number = models.CharField()
    order_number = models.CharField()
    number_of_errors = models.IntegerField()
    start_time = models.DateTimeField()
    end_time = models.DateTimeField()

Я хочу сделать набор запросов "tasks", в который я включу working_date, ticket_number, order_number, и work_hours(end_time-start_time) в формате HH:MM:SS, например 03:55:01. "Рабочая_дата" будет получена из времени окончания_времени. Как только я правильно настрою запрос, я экспортирую результат в CSV.

Я могу сделать запрос в MySQL следующим образом:

SELECT
    DATE(end_time) AS working_date,
    ticket_number, order_number, TIME_FORMAT((TIMEDIFF(end_time,start_time)),'%H:%i:%s') AS work_hours
FROM
    task
WHERE
    end_time>= pStartDate AND end_time< pEndDate;

Как это сделать в Django ORM?

Вы можете попробовать следующее

from django.db.models import ExpressionWrapper, F, fields


duration = ExpressionWrapper(F('end_time') - F('start_time'), output_field=fields.DurationField())
task_list = Task.objects.all().annotate(duration=duration)

Итак, предположим, вы перебираете задачи и хотите найти продолжительность

for task in task_list:
   print(task.duration)
Вернуться на верх