Я пытаюсь вычислить разницу между 2 DateTimeField, чтобы узнать общую работу (только часы) в неделю, и я хочу эту же функцию только для дней.
После другого вопроса Stackoverflow я нахожу такую агрегацию:
total_hours_per_week = (Timesheet.objects.filter(
owner = request.user.pk,
week = datetime.datetime.now().isocalendar()[1]
)
.annotate(
total_hours_per_week=Func(F('end'), F('start'), operator='+', function='age')
))
В настоящее время у меня нет функции в течение нескольких дней (если вы тоже можете помочь мне с ней), но это предыдущее объединение возвращает мне эту ошибку: "нет такой функции: возраст"
Вы можете прочитать ниже мои модели:
class Timesheet(models.Model):
owner = models.ForeignKey(User, on_delete = models.CASCADE)
title = models.CharField(max_length = 64, verbose_name = _("Title"))
start = models.DateTimeField(verbose_name = _("Start time"))
end = models.DateTimeField(verbose_name = _("End time"))
allDay = models.BooleanField(blank = True, default = False, verbose_name = _("All day"), help_text = _("If it's a full day work, just click 'Now' for start/end"))
week = models.IntegerField(verbose_name = "working week")
def __str__(self):
return "{}".format(self.title)
def save(self, *args, **kwargs):
if not self.pk:
self.week = datetime.datetime.now().isocalendar()[1]
if self.allDay:
self.start = datetime.datetime(year = datetime.datetime.today().year, month = datetime.datetime.today().month, day = datetime.datetime.today().day, hour=8, minute=00)
self.end = datetime.datetime(year = datetime.datetime.today().year, month = datetime.datetime.today().month, day = datetime.datetime.today().day, hour=17, minute=30)
super(Timesheet, self).save(*args, **kwargs)
Я надеюсь, что вы можете помочь мне решить мою ошибку.
Спасибо за аванс!