Я пытаюсь вычислить и рассчитать total_hours в моей модели. Я создаю метод для его расчета, однако при этом я получаю сообщение об ошибке. Ошибка называется: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'
Мне просто нужна помощь в том, что делать с этим. Заранее спасибо.
Вот код вопроса:
def convert_timedelta_to_hrs(td):
return decimal(td.total_seconds() / (60 * 60))
class DPRLog(models.Model):
STATUS_CHOICES = (
('PENDING', 'PENDING'),
('CANCELLED', 'CANCELLED'),
('COMPLETED', 'COMPLETED'),
)
TASKS_CHOICES = (
('TESTS EXECUTION', 'TESTS EXECUTION'),
('TESTS DESIGN', 'TESTS DESIGN'),
('MOBILE TESTING WORKSHOP', 'MOBILE TESTING WORKSHOP'),
('BENCH ACTIVITY', 'BENCH ACTIVITY'),
('DEFECT ANALYSIS','DEFECT ANALYSIS'),
)
testuser = models.ForeignKey(User,on_delete = models.CASCADE,unique_for_date= 'reportDate')
status = models.CharField(max_length=30, choices=STATUS_CHOICES,null=True)
reportDate = models.DateField(blank=False, null=False)
login = models.TimeField(blank=False, null=False)
logout = models.TimeField(blank=False, null=False)
total_hours = models.DecimalField(max_digits=4,decimal_places=2,null=True,blank=True)
ot_hours = models.DecimalField(max_digits=4,decimal_places=2,null=True,blank=True)
mainTasks = models.CharField(max_length=50, blank=False, choices=TASKS_CHOICES, null=True)
remarks = models.CharField(max_length=30,null=True,blank=True,)
def __str__(self):
return f'{self.testuser.full_name} DPR Log'
def calculate_hours(self):
total_hours = self.logout - self.login - datetime.timedelta(hours=1)
total_hours = convert_timedelta_to_hrs(total_hours)
ot_hours=None
if total_hours > 8.00:
ot_hours = self.total_hours - datetime.timedelta(hours=8)
ot_hours = convert_timedelta_to_hrs(ot_hours)
total_hours = 8.00
return total_hours, ot_hours
def save(self,*args,**kwargs):
self.total_hours, self.ot_hours = self.calculate_hours()
super().save(*args, **kwargs)