В процессе написания апи для себя решил начать ее постепенное усложнение. Это собственно говоря нечто вроде бухгалтерии, только сильно упрощенной. В модели проекта есть такие поля как цена проекта (price) и дополнительная оплата по проекту (additional_pay). Хочу чтобы было еще значение total_pay, которая по сути является суммой вышеуказанных полей. Однако если я просто в модели пишу total_pay = price + additional_pay , то просто получаю ошибку- TypeError: unsupported operand type(s) for +: 'FloatField' and 'FloatField'
Поискал в интернет, но что-то не нашел как именно нужно решать именно такую задачу. Подскажите пожалуйста, как в таком случае лучше поступить.
Мой код
class Project(models.Model):
title = models.CharField('Имя', max_length=200)
contract_number = models.CharField('Номер договора', max_length=200)
description = models.TextField()
create_date = models.DateTimeField("date published",
auto_now_add=True)
author = models.ForeignKey(User, on_delete=models.PROTECT,
related_name="projects")
customer = models.ForeignKey('Customer',
on_delete=models.PROTECT,
related_name="projects")
price = models.FloatField('Стоимость проекта')
additional_pay = models.FloatField('Дополнительная оплата', blank=True,
null=True)
class Meta:
ordering = ["-pk"]
def __str__(self):
return self.title[:15]
class ProjectSerializer(serializers.ModelSerializer):
class Meta:
fields = ('title', 'contract_number', 'description', 'customer',
'price', 'additional_pay', 'pk')
model = Project
class ProjectViewSet(viewsets.ModelViewSet):
queryset = Project.objects.all()
serializer_class = ProjectSerializer
def perform_create(self, serializer):
if serializer.is_valid:
serializer.save(author=self.request.user)