【发布时间】:2020-11-03 08:50:07
【问题描述】:
我正在将 django 与 chartjs 集成。我使用如下所示的基于类的视图。
class SingleTagChartJSONView(BaseLineOptionsChartView):
def get_context_data(self, **kwargs):
context = super(BaseLineChartView, self).get_context_data(**kwargs)
date_year = int(str(context["year"]))
date_month = int(str(context["month"]))
specific_date = datetime(date_year, date_month, 1)
obj_tags = mitop_tags.objects.filter(
tag_publish_date__year=specific_date.year,
tag_publish_date__month=specific_date.month,
post_tag_single=str(context['tag'])).extra(
{'day' : "date(tag_publish_date)"}
).values('day').annotate(
tag_occur=Count('post_tag_single'))
我得到这样的 obj_tags 输出:
{'day': datetime.date(2020, 10, 16), 'tag_occur': 3}
{'day': datetime.date(2020, 10, 17), 'tag_occur': 3}
{'day': datetime.date(2020, 10, 18), 'tag_occur': 1}
{'day': datetime.date(2020, 10, 19), 'tag_occur': 2}
{'day': datetime.date(2020, 10, 20), 'tag_occur': 1}
{'day': datetime.date(2020, 10, 22), 'tag_occur': 6}
{'day': datetime.date(2020, 10, 23), 'tag_occur': 8}
{'day': datetime.date(2020, 10, 24), 'tag_occur': 8}
{'day': datetime.date(2020, 10, 26), 'tag_occur': 8}
{'day': datetime.date(2020, 10, 27), 'tag_occur': 6}
{'day': datetime.date(2020, 10, 28), 'tag_occur': 6}
{'day': datetime.date(2020, 10, 30), 'tag_occur': 3}
{'day': datetime.date(2020, 10, 31), 'tag_occur': 7}
我想为查询集中不存在的日期(记录)添加默认值。
{'day': datetime.date(2020, 10, 1), 'tag_occur': 0}
在这种情况下,从 1-15 然后缺少 25 和 29。 期望的输出
{'day': datetime.date(2020, 10, 1), 'tag_occur': 0}
{'day': datetime.date(2020, 10, 2), 'tag_occur': 0}
{'day': datetime.date(2020, 10, 3), 'tag_occur': 0}
{'day': datetime.date(2020, 10, 4), 'tag_occur': 0}
{'day': datetime.date(2020, 10, 5), 'tag_occur': 0}
{'day': datetime.date(2020, 10, 6), 'tag_occur': 0}
{'day': datetime.date(2020, 10, 7), 'tag_occur': 0}
{'day': datetime.date(2020, 10, 8), 'tag_occur': 0}
{'day': datetime.date(2020, 10, 9), 'tag_occur': 0}
{'day': datetime.date(2020, 10, 10), 'tag_occur': 0}
{'day': datetime.date(2020, 10, 11), 'tag_occur': 0}
{'day': datetime.date(2020, 10, 12), 'tag_occur': 0}
{'day': datetime.date(2020, 10, 13), 'tag_occur': 0}
{'day': datetime.date(2020, 10, 14), 'tag_occur': 0}
{'day': datetime.date(2020, 10, 15), 'tag_occur': 0}
{'day': datetime.date(2020, 10, 16), 'tag_occur': 3}
{'day': datetime.date(2020, 10, 17), 'tag_occur': 3}
{'day': datetime.date(2020, 10, 18), 'tag_occur': 1}
{'day': datetime.date(2020, 10, 19), 'tag_occur': 2}
{'day': datetime.date(2020, 10, 20), 'tag_occur': 1}
{'day': datetime.date(2020, 10, 22), 'tag_occur': 6}
{'day': datetime.date(2020, 10, 23), 'tag_occur': 8}
{'day': datetime.date(2020, 10, 24), 'tag_occur': 8}
{'day': datetime.date(2020, 10, 25), 'tag_occur': 0}
{'day': datetime.date(2020, 10, 26), 'tag_occur': 8}
{'day': datetime.date(2020, 10, 27), 'tag_occur': 6}
{'day': datetime.date(2020, 10, 28), 'tag_occur': 6}
{'day': datetime.date(2020, 10, 29), 'tag_occur': 0}
{'day': datetime.date(2020, 10, 30), 'tag_occur': 3}
{'day': datetime.date(2020, 10, 31), 'tag_occur': 7}
该输出应按日期排序。 最后输出到 chartjs 数据集
在此处预览实际问题: https://consuming-olm-0670.dataplicity.io/mi_top/statistic/tag/f1/10/2020
【问题讨论】:
标签: python django date chart.js django-queryset