Вычисление суммы значений 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 и вычислить производительность, которая представляет собой количество_людей * минуты