如何编写组查询

时间:2016-07-05 09:16:51

标签: django shell group-by

我的模型名为IssueFlags,其中包含列: id,created_at,flags_id,issue_id,comments

我想获取有关flags_id,created_at和comments

的信息的唯一issue_id(最新创建)的数据

通过sql,它的工作方式如下:

SELECT  created_at, flags_id, issue_id, comments
FROM Issues_issueflags
group by issue_id

如何在Django中做同样的事情?我试着在shell中编写sth,但是没有属性组

IssueFlags.objects.order_by('-created_at')

以上仅返回有序数据列表。

1 个答案:

答案 0 :(得分:1)

尝试这样做:

from django.db.models import Count
IssueFlags.objects.values('created_at', 'flags_id', 'issue_id', 'comments').order_by('-created_at').annotate(total=Count('issue_id'))

我写过annotate(total=Count('issue_id'))假设您有多个唯一的issue_id条目(请注意,您可以执行所有可能类型的聚合,如Sum,Count,Max,Avg inside。此外,已经存在答案,在django中进行分组。还要查看此link或此link。另外,请阅读此django documentation以清楚了解何时在注释()之前放置values()以及何时将其放置,然后根据您的要求实施学习。

如果您有任何疑问,将很乐意提供帮助。