django过滤器计算范围内的小时数

时间:2015-07-14 20:17:58

标签: python django

我有一组数据可以有效地定义日期时间标记“in”和日期时间标记“out”以供某人工作时使用。每个人在几个月内会有多种in-s和out-s组合。

class InOut(models.Model):
    user = models.ForeignKey(User)
    in_dt = models.DateTime
    out_dt = models.DateTime
    hours = models.FloatField

(然后我实际上有一个信号来计算out_dt和in_dt之间的工作小时数。)

我想编写代码/过滤器/查询来计算他们在start_date和end_date之间工作的总小时数(例如,超过一个月)。踢球者如果他们在一个月的最后一天开始工作,然后在下个月的第一天结束,则小时应该只包括该月最后一天的午夜时间。

现在,我可以创建一个查询集,用于过滤start_date和end_date之间包含的所有条目(例如,月份)。

worked_in_month = InOut.objects.filter( in_dt__lte=end_date, out_dt__gte=start_date)

然后我可以做一个注释或值和注释以及Sum(小时),但这不会占用start_date / end_date之外的小时数。或者我可以尝试使用in_dt和out_dt执行某些操作并忽略预先计算的小时数。

我显然可以在python中进行计算(这可能是唯一的答案)但是想知道我是否可能在Djano中丢失过滤等内容。

0 个答案:

没有答案