我在制定标题时遇到了困难,如果你有更好的标题,请编辑它:)
我正在尝试使用pygooglechart显示一些统计数据。我正在使用Django将数据库项从数据库中取出。
数据库项有一个我想“排序”的datetime字段。我真正想要的是填充一个这样的列表。
data = [10, 12, 51, 50]其中每个列表项是一小时内数据库项的数量(计数)。假设我执行一个查询,获取过去72小时内的所有项,我想将每个小时的计数收集到一个列表项中。有谁有好办法做到这一点?
发布于 2009-08-20 08:25:02
假设您运行的是Django1.1或较新的版本,则可以使用新的aggregation features。类似于:
counts = MyModel.objects.values('datettimefield').annotate(Count('datettimefield'))这实际上为您提供了一个字典列表:
[{'datetimefield':<date1>, 'datettimefield__count':<count1>},
{'datetimefield':<date2>, 'datettimefield__count':<count2>}, ...]但是编写一个列表理解来获得你想要的格式应该是相当容易的。
在注释之后编辑:如果你使用的是1.0.2,最有效的方法就是回退到原始的SQL。
cursor = connection.cursor()
cursor.execute(
"SELECT COUNT(0) FROM `mymodel_table` "
"GROUP BY `mydatetimefield`;"
)
counts = cursor.fetchall()发布于 2009-08-20 00:30:58
django aggregation
https://stackoverflow.com/questions/1302999
复制相似问题