如何在Django中根据分钟查询输入数?

Posted

技术标签:

【中文标题】如何在Django中根据分钟查询输入数?【英文标题】:How to query number of input based on minute in Django? 【发布时间】:2019-01-19 22:23:36 【问题描述】:

所以我正在为当地的货运租赁 SME 实施一个网络应用程序。基本上它的作用是记录日期、小时和分钟以计算卡车的 Ritase(输出)。

这里是models.py

class Muatan(models.Model):
     recorded_date = models.DateField(auto_now_add=True)
     date_added = models.DateField(auto_now_add=False)

     shift  = models.ForeignKey(Shift, on_delete=models.DO_NOTHING)

     time_logged = models.TimeField(auto_now_add=False)

     excavator = models.ForeignKey(Excavator, on_delete=models.DO_NOTHING)
     operator_excavator = models.ForeignKey(ExcavatorOperator, on_delete=models.DO_NOTHING)


     dumpTruck = models.ForeignKey(DumpTruck, on_delete=models.DO_NOTHING, null=True)
     driver_dumptruck = models.ForeignKey(DumpTruckDriver, on_delete=models.DO_NOTHING)

     location = models.ForeignKey(Lokasi, on_delete=models.DO_NOTHING)
     material = models.ForeignKey(Material, on_delete=models.DO_NOTHING)



     reported_problem = models.TextField(blank=True)

举个模型的例子,假设经理从 admin.py 记录这些输入。出于提问目的而简化,我只放了 date_added 和 time_logged。

2018 年 8 月 13 日 14:20 2018 年 8 月 13 日 14:40 2018 年 8 月 13 日 14:59 2018 年 8 月 13 日 15:15 2018 年 8 月 13 日 15:30

查询的预期输出类似于

小时:14分钟:20 小时:14分钟:40 小时:14分钟:59 总酶:3

因为 14 小时内有 3 个日志。

我将如何在 django 中实现这一点?另外,我是把代码放在models.py 还是views.py 中?总 django 菜鸟在这里,非常感谢您的帮助 :)

【问题讨论】:

【参考方案1】:

在挖掘文档后,我设法找到了答案。它使用TruncHour 函数

muatan.objects.annotate(hour=TruncHour('time_logged', output_field=TimeField()),).values('hour').annotate(muatan=Count('id'))

【讨论】:

以上是关于如何在Django中根据分钟查询输入数?的主要内容,如果未能解决你的问题,请参考以下文章

如何计算呈现 Django 管理页面所需的 SQL 查询数?

如何优化这个复杂的查询?

如何根据Django Solr中选定的类别形成正确的查询列表

如何在 django 1.11 中查找给定月份每周的记录数?

每分钟 PromQL 请求数

在 Django 模型中保存时区