Django注解:将时差转换为整数或小数

问题描述 投票:0回答:1

我正在尝试对用户每天花费的时间进行求和。我想将其转换为整数或小数(例如 2、6.5)小时,以便轻松地将其绘制到我的图表中。但下面代码的结果是这样的格式HH:mm:ss。任何人都可以帮我解决这个问题吗?

day = Clocking.objects.filter(clockout__isnull=False, user=nid).annotate(date=TruncDate('clockin'))
      .values('date').annotate(total=Sum(F('clockout') - F('clockin'))).values('total')

这是我的模型.py

class Clocking(models.Model):
    user= models.ForeignKey('User', models.DO_NOTHING)
    clockin = models.DateTimeField()
    clockout = models.DateTimeField(null=True)
python django mariadb
1个回答
0
投票

基于Func,使用sql函数

TIMEDIFF
然后
TIME_TO_SEC
,将返回秒:

day = Clocking.objects.filter(clockout__isnull=False, user=nid).annotate(date=TruncDate('clockin'))
      .values('date').annotate(
    total=Sum(
        Func(
            Func(
                F('clockout'),F('clockin'), function='TIMEDIFF'),
            function='TIME_TO_SEC')
        )).values('total')
© www.soinside.com 2019 - 2024. All rights reserved.