0

我很难制定标题,所以如果你有更好的标题,请编辑它:)

我正在尝试使用 pygooglechart 显示一些统计信息。我正在使用 Django 从数据库中获取数据库项目。

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

data = [10, 12, 51, 50]

其中每个列表项是一小时内数据库项的数量(计数)。所以假设我做了一个查询,获取过去 72 小时内的所有项目,我想将每小时的计数收集到一个列表项中。任何人都有这样做的好方法吗?

4

2 回答 2

2

假设您正在运行 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()
于 2009-08-20T08:25:01.897 回答
0

django聚合

于 2009-08-20T00:30:58.483 回答