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 сделает это, но это не так. Метод вычисляет значение, но поле не обновляется.

Вернуться на верх