我很难制定标题,所以如果你有更好的标题,请编辑它:)
我正在尝试使用 pygooglechart 显示一些统计信息。我正在使用 Django 从数据库中获取数据库项目。
数据库项目有一个我想“排序”的日期时间字段。我真正想要的是填充这样的列表。
data = [10, 12, 51, 50]
其中每个列表项是一小时内数据库项的数量(计数)。所以假设我做了一个查询,获取过去 72 小时内的所有项目,我想将每小时的计数收集到一个列表项中。任何人都有这样做的好方法吗?
我很难制定标题,所以如果你有更好的标题,请编辑它:)
我正在尝试使用 pygooglechart 显示一些统计信息。我正在使用 Django 从数据库中获取数据库项目。
数据库项目有一个我想“排序”的日期时间字段。我真正想要的是填充这样的列表。
data = [10, 12, 51, 50]
其中每个列表项是一小时内数据库项的数量(计数)。所以假设我做了一个查询,获取过去 72 小时内的所有项目,我想将每小时的计数收集到一个列表项中。任何人都有这样做的好方法吗?
假设您正在运行 Django 1.1 或最近的结帐,您可以使用新的聚合功能。就像是:
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()