首页 > 解决方案 > 如果没有给定日期范围的结果和 django 注释的 0 结果,如何显示?

问题描述

结果显示正确但如果没有结果如何显示日期和 0 结果

pre_days = datetime.datetime.today() - timedelta(days=6)
today_now = datetime.datetime.today()
enquiry_chart = All_enquiries.objects.filter(enquired_at__range=[pre_days, today_now]).values('enquired_at__date').annotate(enquired=Count('id'))

例子 在此处输入图像描述

标签: djangopostgresqlhighchartsdjango-views

解决方案


没有。数据库使用最小世界假设。这意味着如果不存在数据,则它不存在。

但是,您可以自己添加额外的值。例如:

num_days = 6
today_now = datetime.datetime.today()
pre_days = today_now - timedelta(days=num_days)
temp = All_enquiries.objects.filter(
    enquired_at__range=[pre_days, today_now]
).values('enquired_at__date').annotate(
    enquired=Count('id')
)
tempdict = {
    row['enquired_at__date']: row['enquired']
    for row in temp
}

result = [
    {
        'enquired_at__date': (pre_days+timedelta(days=k)).date(),
        'enquired': tempdict.get((pre_days+timedelta(days=k)).date(), 0)
    }
    for k in range(num_days+1)
]

因此,我们首先构建一个字典,其中我们将日期映射到记录数,然后我们再次构建一个记录列表,我们将在其中使用零作为缺失值。


推荐阅读