Джанго: Аннотировать пропущенные даты - PullRequest
0 голосов
/ 07 мая 2019

Я хочу знать, сколько заказов я получил в день за определенный период.

Моя модель заказов выглядит так:

class Order(models.Model):

...
    bookingdate         = models.DateTimeField(default=timezone.now)
...

Мой текущий запрос Django выглядит так:

query = Order.objects.filter(bookingdate__gte=startdate, bookingdate__lte=enddate)
query = query.annotate(created_date=TruncDate('bookingdate')).values('created_date').annotate(
            sum=Count('created_date')).values('created_date', 'sum')

Моя текущая проблема заключается в том, что я получаю только те даты, в которых по крайней мере один заказ происходит в день.Но я также хочу перечислить даты с 0 заказами.

Например, я сейчас получаю «список», подобный этому:

12.12.2018 => 3
14.12.2018 => 1
17.12.2018 => 2

Но я также хочу, чтобы даты между ними.Пример:

12.12.2018 => 3
13.12.2018 => 0
14.12.2018 => 1
15.12.2018 => 0
16.12.2018 => 0
17.12.2018 => 2

Есть идеи, как мне это сделать?

1 Ответ

0 голосов
/ 07 мая 2019

В вашем коде есть опечатка

Заменить

query = Order.objects.filter(bookingdata__gte=startdate, bookingdate__lte=enddate)

С

query = Order.objects.filter(bookingdate__gte=startdate, bookingdate__lte=enddate)
...