我需要检索从午夜到现在的时间在每个小时内创建的记录计数。为此,模型包含一个created_at
时间戳字段,该字段将记录创建时间。模型定义如下。
class Token(models.Model):
customer_name = models.CharField(max_length=50)
created_at = models.DateTimeField(auto_now_add=True)
remarks = models.TextField(null=True,blank=True)
modified_at = models.DateTimeField(auto_now =True)
我在SQL输出中寻找的结果如下
Intervel | count|
-----------------|
01:00 AM | 0 | # 00:00 to 01:00 AM
02:00 AM | 0 |
.......
10:00 AM | 20 |
11:00 AM | 5 |
........
03:00 PM | 5 |
------------------
我需要得到模型查询,可以在数据库端执行上述操作,而无需加载从午夜到现在一天中创建的所有记录,然后通过在应用程序中运行forloop来获取计数。请帮我这个忙。
2条答案
按热度按时间dnph8jn41#
您需要使用
values
和annotate
来实现这一点。tpgth1q72#
你可以先用计数提取项目,但这还不够,因为可能有几个小时根本没有活动,数据库在“封闭世界假设”下工作。
因此,我们查询,与:
因此,在这里我们首先查询数据,然后将其后处理到字典中,最后为1-24范围内没有数据的小时设置值。