Вычисление суммы значений TimeField в Django

Здесь я использую Django 3.0 и Python 3,7

Здесь мне нужно вычислить все значения TimeField, чей day_type='Weekdays'

Вот мой models.py

class WorkTime(models.Model):
    client = models.ForeignKey(Client,on_delete=models.CASCADE)
    day_type = models.CharField(max_length=200, blank=True, null=True, choices=DAY_TYPE_CHOICES)
    start_time = models.DateTimeField()
    finish_time = models.DateTimeField()
    total_time = models.TimeField(blank=True, null=True)


class ProductionCapacity(models.Model):
    client = models.ForeignKey(Client,on_delete=models.CASCADE)
    date = models.DateTimeField(blank=True, null=True)
    number_of_people = models.IntegerField(blank=True, null=True)
    capacity = models.TimeField(blank=True, null=True)
    work_time = models.ForeignKey(WorkTime,on_delete=models.CASCADE,blank=True,null=True)

Вот мой views.py

class ProductionCapacityCreateView(CreateView):
    template_name = 'manufacturing/production_capacity_form.django.html'
    form_class = ProductionCapacityForm
    context_object_name = "production_capacity"
    model = ProductionCapacity

    def get_form_kwargs(self):
        kwargs = super(ProductionCapacityCreateView, self).get_form_kwargs()
        kwargs["client"] = self.request.user.client
        kwargs["request"] = self.request
        return kwargs

    def form_valid(self, form):
        self.client = self.request.user.client
        self.object = form.save(commit=False)
        self.object.client = self.request.user.client
        num_of_people = form.cleaned_data['number_of_people']
        date = form.cleaned_data['date']
        
        myDate = datetime.datetime.strptime(str(date), "%Y-%m-%d")
        weekno = myDate.weekday()
  
        if weekno < 5:
            print("Today is a Weekday")
            work_time = WorkTime.objects.filter(client=self.client,day_type='Weekdays').values_list('total_time',flat=True)
            c_time = sum(work_time) 
            self.object.capacity = number_of_people * c_time
            
        else:  
            pass
        
        try:
            self.object.save()
            messages.success(self.request, 'Day created successfully.')
        except BaseException as e:
            logger.exception(e)
            messages.error(self.request, 'Failed to create a day.')
        return HttpResponseRedirect(reverse("capacity_list"))

Вот трассировка моей ошибки

Traceback (most recent call last):
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/views/generic/base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/views/generic/base.py", line 97, in dispatch
    return handler(request, *args, **kwargs)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/views/generic/edit.py", line 172, in post
    return super().post(request, *args, **kwargs)
  File "/home/harika/lightdegree/lib/python3.7/site-packages/django/views/generic/edit.py", line 142, in post
    return self.form_valid(form)
  File "/home/harika/krishna test/dev-1.8/mcam/server/mcam/manufacturing/views.py", line 132, in form_valid
    c_time = sum(work_time)
TypeError: unsupported operand type(s) for +: 'int' and 'datetime.time'

Здесь мне нужно вычислить все значения общего_времени из WorkTime и вычислить производительность, которая представляет собой количество_людей * минуты

Вернуться на верх