考虑到这个模型和数据:
Ad_id + 日期 = 主键
Ad_id date clicks
------------------------------
3 8/10/12 124
3 7/10/12 433
3 6/10/12 99
4 8/10/12 23
4 7/10/12 80
我正在尝试按 ad_id 分组以返回所有点击的总和。
用sql术语:
select Ad_id, date, sum(clicks) from ads group by Ad_id
问题是 Django 自动对模型中的每个字段进行分组,所以分组并没有真正起作用(因为每一行都是唯一的)。
我已经检查过的解决方案:
我知道可以做这样的事情:
Ad.objects.values('ad_id').annotate(clicks_sum=Sum('clicks'))
但它并不好,因为它不返回广告模型,而是一个字典。
我也不能使用原始 SQL,因为它不是链式的
我也尝试设置
MyQuerySet.group_by = ['ad_id']
也不行。。
所以我真的只需要按我需要的字段进行分组,结果将是一个广告模型。