Django : "TypeError: неподдерживаемый тип(ы) операнда для +: 'FloatField' и 'FloatField'"

Я пытаюсь добавить 2 переменные models.FloatField в Django перед сохранением модели, и получаю ошибку.

    from django.db import models
    class MyModel(models.Model): 
        
        def __init__(self):
            self.value1 = models.FloatField(default=10.0)
            self.value2 = models.FloatField(default=20.0)
       
        def add_values(self):
            return self.value1 = self.value1 + self.value2

Когда я создаю объект MyModel и вызываю функцию add_values, я получаю следующую ошибку

    my_model = MyModel()
    my_model.add_values()
   **Error Stack**
   line 8, in add_values
   self.value1 = self.value1 + self.value2
   TypeError: unsupported operand type(s) for +: 'FloatField' and 'FloatField'```

Вы конструируете поля не в конструкторе, а на уровне модели, поэтому:

from django.db import models

class MyModel(models.Model): 
    value1 = models.FloatField(default=10.0)
    value2 = models.FloatField(default=20.0)
       
    def add_values(self):
        return self.value1 = self.value1 + self.value2

Возможно, также лучше превратить add_values в свойство:

from django.db import models

class MyModel(models.Model): 
    value1 = models.FloatField(default=10.0)
    value2 = models.FloatField(default=20.0)

    @property
    def sum_values(self):
        return self.value1 = self.value1 + self.value2
Вернуться на верх