django model 如何实现过滤重复计数

2018-05-02 12:11:41 +08:00
 cz5424

使用 raw 查询,提示没有主键,InvalidQuery('Raw query must include the primary key'),openid 非主键

answer_num = cls.objects.raw("SELECT COUNT(*) FROM server_answerlog WHERE `paper_id` = %d GROUP BY `openid`" % int(paper_id))

使用

answer_num = cls.objects.filter(paper_id=paper_id).values('openid').annotate(num=Count('openid'))

生成出来了并没有我想要的 group by openid

SELECT `server_answerlog`.`openid`, COUNT(`server_answerlog`.`openid`) AS `num` FROM `server_answerlog` WHERE `server_answerlog`.`paper_id` = 1 GROUP BY `server_answerlog`.`id` ORDER BY `server_answerlog`.`id` ASC

对 annotate 不太熟悉,特来求助各位大佬

3140 次点击
所在节点    Django
1 条回复
banbo
2018-05-02 14:52:49 +08:00
Count(主键)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/451408

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX