计算每天的活动数量

时间:2018-03-31 14:41:55

标签: python django python-3.x

我正在尝试使用chartist,以显示每天的事件数量,到目前为止,我已经尝试了以下内容:

models.py

class Event(models.Model):
    name = models.TextField(max_length=500)
    event_date = models.DateTimeField()

charts.py

def mychart():
    events = Event.objects.annotate(start_day=Trunc('event_date', 'day', output_field=DateField())).values('event_day').annotate(myevent=Count('id'))                   

    return json.dumps({
         'labels':[p['start_day'] for p in events],
         'series':[p['myevents'] for p in events]})

但我仍然得到单个对象,而不是按“日”分组! 如下图所示:

2018-04-02 1
2018-03-31 1
2018-04-02 1
2018-04-02 1
2018-03-31 1
2018-04-02 1
2018-04-02 1

我期待的是:

2018-04-02 5

注意:我正在使用PostgreSQL数据库

1 个答案:

答案 0 :(得分:1)

我打赌你的Event模型上有一个默认排序,cause your aggregation not to work as expected。在进行查询时尝试清除任何默认顺序:

Event.objects.annotate(
     start_day=Trunc('event_date', 'day', output_field=DateField())
).values('event_day').annotate(myevent=Count('id')).order_by()

注意最后的order_by()