Аннотация Django: Преобразование разницы во времени в целое число или десятичную дробь
Я пытаюсь суммировать часы, проведенные пользователем за день. Я хотел бы преобразовать это в целое число или десятичное (например, 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')
Вот мой models.py
class Clocking(models.Model):
user= models.ForeignKey('User', models.DO_NOTHING)
clockin = models.DateTimeField()
clockout = models.DateTimeField(null=True)
На основе 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')