Присвоить 0, если дата не существует в записях из базы данных
Я пытаюсь сгенерировать список значений для отображения на приборной панели. Список показывает, сколько заказов было сделано в день за последние 7 дней, и если за этот день не было зарегистрировано ни одного заказа, то возвращается 0.
Например, если у нас есть такая модель отслеживания заказов:
Order: {date_ordered (date), count_orders (int), restaurant (string)}
Если мы хотим перечислить все заказы за последние семь дней, я бы сделал что-то вроде:
from datetime import datetime, timedelta
from .models import Order
last_seven_days = datetime.now()-timedelta(days=6)
orders = Order.objects.filter(date_ordered__gte=last_seven_days).order_by('date_ordered')
заказы возвращаются примерно так:
[<19-05-2022, Restaurant1, 35>, <19-05-2022, Restaurant2, 30>, <22-05-2022, Restaurant1, 19>, <22-05-2022, Restaurant2, 10>, <23-05-2022, Restaurant1, 32>]
Конечный результат, который я хотел бы получить, растягивается на последние 7 дней.
Если последние семь дней ['18-06-2022', '19-06-2022', '20-06-2022', '21-06-2022', '22-06-2022', '23-06-2022', '24-06-2022']
Тогда мой вывод должен быть таким:
[[0,35,0,0,19,32,0], [0,30,0,0,10,0,0]]
Приведенный выше массив в основном говорит о двух вещах:
1- должно быть столько кортежей, сколько ресторанов
2- если дата не существует, это означает, что было зарегистрировано 0 заказов.
Мне кажется, что это можно решить с помощью запроса, а не циклом 3 раза и множеством условий. Не могли бы вы поделиться некоторыми мыслями по этому поводу?