Django .annotate TruncMonth : Как получить полный диапазон месяцев
Я хочу получить общий заработок за каждый месяц и отобразить его на графике, поэтому я делаю следующий запрос
Вот мой запрос:
query = UserOrderService.objects.all()
query = query.annotate(month=TruncMonth('order_booking_date')).values(
'month').annotate(no_of_services=Count('pk')).annotate(
total=Sum(F('service_price') * F('quantity'))).order_by('month')
Вышеприведенный запрос выдает данные только по месяцам, в которых происходило бронирование
Выход:
"data": [
{
"no_of_services": 1,
"total": 26725.0,
"month": "November"
},
{
"no_of_services": 1,
"total": 26725.0,
"month": "December"
}
]
Так как я хочу получить все данные за все месяцы, даже если в конкретном месяце нет данных
Ожидаемый выход:
"data": [
{
"no_of_services": 0,
"total": 0,
"month": "January"
},
{
"no_of_services": 0,
"total": 0,
"month": "February"
},
{
"no_of_services": 0,
"total": 0,
"month": "March"
},
...
{
"no_of_services": 1,
"total": 26725.0,
"month": "November"
},
{
"no_of_services": 1,
"total": 26725.0,
"month": "December"
}
]