首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从按日期时间字段排序的查询集中使用items.count()填充列表

如何从按日期时间字段排序的查询集中使用items.count()填充列表
EN

Stack Overflow用户
提问于 2009-08-19 22:37:48
回答 2查看 376关注 0票数 0

我在制定标题时遇到了困难,如果你有更好的标题,请编辑它:)

我正在尝试使用pygooglechart显示一些统计数据。我正在使用Django将数据库项从数据库中取出。

数据库项有一个我想“排序”的datetime字段。我真正想要的是填充一个这样的列表。

代码语言:javascript
复制
data = [10, 12, 51, 50]

其中每个列表项是一小时内数据库项的数量(计数)。假设我执行一个查询,获取过去72小时内的所有项,我想将每个小时的计数收集到一个列表项中。有谁有好办法做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-20 08:25:02

假设您运行的是Django1.1或较新的版本,则可以使用新的aggregation features。类似于:

代码语言:javascript
复制
counts = MyModel.objects.values('datettimefield').annotate(Count('datettimefield'))

这实际上为您提供了一个字典列表:

代码语言:javascript
复制
[{'datetimefield':<date1>, 'datettimefield__count':<count1>},
 {'datetimefield':<date2>, 'datettimefield__count':<count2>}, ...]

但是编写一个列表理解来获得你想要的格式应该是相当容易的。

在注释之后编辑:如果你使用的是1.0.2,最有效的方法就是回退到原始的SQL。

代码语言:javascript
复制
cursor = connection.cursor()
cursor.execute(
     "SELECT COUNT(0) FROM `mymodel_table` "
     "GROUP BY `mydatetimefield`;"
)
counts = cursor.fetchall()
票数 2
EN

Stack Overflow用户

发布于 2009-08-20 00:30:58

django aggregation

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1302999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档