我每天都会发生一件事。这是模型
class Event(models.Model):
date = models.DateField()
plays = models.IntegerField()
viewers = models.IntegerField()
time = models.FloatField()
我试图连续几天(周五,周六,周日)汇总事件。
注意:周五和周六是同一周,周日是下一周。使用原始查询(postgres)我可以使用以下查询来聚合
SELECT DATE_TRUNC('week', "date")::date AS date,
SUM(plays) AS total_plays,
SUM(viewers) AS total_views,
SUM(time) AS total_time
FROM app_event
WHERE extract(isodow FROM date) IN (5,6,7)
GROUP BY date_trunc('week',"date")
然而在django中我找不到复制查询的方法
queryset = Event.objects.filter(date__week_day__in=[1, 6, 7])\
.annotate('week'=TruncWeek('date')) \
.values('week')\
.annotate(total_views=Sum('views'), total_plays=Sum('plays'), total_time=Sum('time')) \
.values('week', 'total_views', 'total_time', 'total_plays')
但是,此查询会在同一周内选择星期日,星期五和星期六。