неподдерживаемые типы операндов для -: 'datetime.time' и 'datetime.time', когда я вычисляю время OT и общее количество часов - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь вычислить и рассчитать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...