繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM