Django: Заполнение атрибутов полей модели из текущих полей
В моей текущей модели элемента я хочу заполнить поля модели с помощью вычислений в init.
class Items(models.Model):
user = models.ForeignKey(Profile, on_delete=models.CASCADE, null=True, blank=True)
item_name = models.CharField(max_length=200, null=False, blank=False, default='Enter name')
item_category = models.ForeignKey(Categories, null=True, blank=True, on_delete=models.SET_NULL)
item_created_at = models.DateTimeField(auto_now_add=True, null=True, blank=False)
item_start_date = models.DateField(null=True, blank=False)
item_end_date = models.DateField(null=True, blank=False)
item_purchase_price = models.FloatField(null=True, blank=False)
item_rest_value = models.FloatField(null=True, blank=False)
item_saving_goal = models.FloatField(default=0, null=True, blank=False)
item_date_delta = models.FloatField(default=0, null=True, blank=False)
item_days_passed = models.FloatField(default=0, null=True, blank=False)
item_currently_saved = models.FloatField(default=0, null=True, blank=False)
item_percentage_saved = models.FloatField(default=0.01, null=True, blank=False)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.item_saving_goal = self.item_purchase_price - self.item_rest_value
self.item_date_delta = self.item_end_date - self.item_start_date
self.item_days_passed = (date.today() - self.item_start_date).float() ## Make date calc
self.item_currently_saved = self.item_saving_goal * (self.item_rest_value / self.item_date_delta )
self.item_percentage_saved = self.item_currently_saved / self.item_saving_goal * 100
Однако в настоящее время я получаю следующую ошибку:
TypeError at /items/ unsupported operand type(s) for -: 'NoneType' and 'NoneType'
C:\Users...\base\models.py, строка 43, in init self.item_saving_goal = self.item_purchase_price - self.item_rest_value