Обновление данных в модели из представлений Djnago
Здравствуйте, у меня проблема с обновлением данных, которые хранятся в модели. Я хочу обновить данные, которые хранятся в модели без формы, это функция, которая суммирует каждую транзакцию пользователя и после каждого изменения я хотел бы, чтобы она обновлялась.
мои модели:
class Portfolio(models.Model):
portfolio_id = models.AutoField(primary_key=True,blank=True)
portfolio_title = models.CharField(unique=True,max_length=200, null=True,blank=True)
user_name = models.ForeignKey(Customer, null=True, on_delete=models.SET_NULL,blank=True)
p_shares_num_sum = models.DecimalField(decimal_places=2,default=0,max_digits=999,editable=True, null=True,blank=True)
p_last_mod_date = models.DateField(auto_now_add=False,null=True,editable=True,blank=True)
p_comp_num_sum = models.DecimalField(decimal_places=2,default=0,max_digits=999,editable=True, null=True,blank=True)
p_to_buy_percentage = models.CharField(max_length=200,editable=True, null=True,blank=True)
p_profit_earned = models.DecimalField(decimal_places=6,editable=True,default=0,max_digits=999, null=True,blank=True)
def __str__(self):
return self.portfolio_title if self.portfolio_title else ''
```
The data which I want to send to it after every entry on site
summary_data = [int(shares_num_sum),int(comp_number),mod_date,str(to_buy_percentage),float(profit_earned)]
The function is written and prints me:
[4, 2, datetime.date(2021, 12, 20), '100%', 0.9]
Если у вас есть данные из функции в представлении, просто получите текущий объект portolio и присвойте ему значения полей, затем вызовите метод save()
из этого объекта.
Например:
portfolio_object = Portfolio.objects.get(pk=some_pk)
portfolio_object.some_field = summary_data[0]
... here the rest of values
portfolio_object.save()
Помните, что он будет выполняться каждый раз, когда вы открываете это представление, поэтому подумайте о некоторой оптимизации.