Django:注释缺失的日期

Posted

技术标签:

【中文标题】Django:注释缺失的日期【英文标题】:Django: Annotate missing dates 【发布时间】:2019-09-24 23:11:44 【问题描述】:

我想知道我在特定时期每天收到多少订单。

我的订单模型如下所示:

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

知道我该怎么做吗?

【问题讨论】:

你做到了吗?我正在尝试以同样的方式做一些事情。 很遗憾没有。我正在我的 python 代码中“手动”处理这个。 【参考方案1】:

您的代码中有错字

替换

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

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

【讨论】:

这应该作为评论发布,而不是问题的答案

以上是关于Django:注释缺失的日期的主要内容,如果未能解决你的问题,请参考以下文章

SQL 自动为表中的缺失日期从前一个日期生成缺失的日期和价格

返回连续的缺失工作日日期并在缺失日期旁边分配费率

获取日期序列中所有缺失的日期

填写缺失的日期值并根据前一行填充第二列

Pandas 10分钟入门----缺失数据的处理(官方文档注释版三)

Python Pandas:返回连续缺失的工作日日期,并在数据框中缺失日期旁边分配速率