#django
Вопрос:
У меня есть модель, которая выглядит примерно так, как показано ниже, в которой есть поле под названием дата-время. В этом поле содержится запись даты и времени. Что я хочу сделать, так это рассчитать общее количество часов в месяц и неделю. Мне нужны указания, как это сделать.
class Clockin_Transaction(models.Model):
id = models.AutoField(db_column='id', primary_key=True)
clockinusers = models.ForeignKey(Clockin_Users, on_delete=models.CASCADE)
lid = models.IntegerField(db_column='LID', null=True, default=0)
userid = models.IntegerField(db_column='UserID')
temid = models.IntegerField(db_column='TemID')
datetime = models.DateTimeField(db_column='DateTime', help_text='eg:2021-07-21')
inout = models.IntegerField(db_column='InOut')
def __unicode__(self):
return self.clockinusers.name
Ответ №1:
Йо мог бы использовать что-то подобное этому:
from datetime import datetime
end_date = datetime.today()
start_date = end_date - timedelta(days=7)
user = Clockin_Users.objects.filter(...)
transactions = Clockin_Transaction.objects.filter(
clockinusers=user,
datetime__range=[start_date, end_date],
).order_by('-datetime')
total = 0
for tr1, tr2 in zip(transactions, transactions[1:]): # take every 2 consecutive transactions
total = tr1.datetime - tr2.datetime
total = total / 3600 # convert from seconds to hours
Комментарии:
1. Спасибо, я попробовал, но у меня возникла ошибка: DateTimeField Clockin_Transaction. дата и время получили наивное время (2021-10-06 23:14:36.692913), пока активна поддержка часовых поясов.