[英]How to populate a list with items.count() from a queryset sorted by a datetime field
标题很难设定,如果您有更好的标题,请对其进行编辑:)
我正在尝试使用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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.