Django. Обновление экземпляра модели
Допустим, у меня есть модель:
class PurchaseOrder(models.Model):
supplier = models.ForeignKey('Supplier', on_delete=models.DO_NOTHING)
employee = models.ForeignKey('employees.Employee', on_delete=models.DO_NOTHING)
total_price = models.FloatField(null=True, blank=True)
creation_date = models.DateTimeField(auto_now_add=True)
posted = models.BooleanField(default=False)
required_shipment_date = models.DateField(null=True, blank=True)
date_shipped = models.DateField(null=True, blank=True)
date_of_receiving = models.DateField(null=True, blank=True)
shipment_address = models.CharField(max_length=255)
order_status = models.CharField(max_length=255, choices=OrderStatus.ORDER_STATUS_CHOICES, default='ACCEPTED')
def __str__(self):
return f"Purchase order {self.supplier} № {self.pk}"
def get_absolute_url(self):
return reverse('purchases:purchase-order-details', kwargs={'pk': self.pk})
def compute_total_price(self):
total_price = PurchaseOrder.objects.annotate(
value=models.Sum(models.F('purchaseorderitem__quantity') * models.F('purchaseorderitem__price_per_unit'))
)
print("total price")
self.total_price = total_price[0].value
В моей модели есть метод "compute_total_price", который получает все позиции заказа и перемножает количество и цену для каждой позиции, а затем суммирует их. Проблема в том, что я не знаю, как сохранить значение в поле "total_price" моей модели. Я думал, что метод accessing self сделает это, но это не так. Метод вычисляет значение, но поле не обновляется.