Набор запросов 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)