Как правильно написать API для корзины?

Всем привет, столкнулся с небольшой проблемой при написании для корзины, тк впервые это учу. В общем проблема в следующем - у меня на сайте есть корзина, в которой отображается названия товара, количество, цена за единицу товара и общая стоимость всего количества.При написании кода на чистом Django все хорошо работает - при увеличении количества товара правильно считается сумма и итоговая стоимость. А вот при создании API для корзины у меня возникает такая ошибка - товар в корзину добавляется, цена отображается корректно, однако сумма не считается. Как я понимаю, проблема здесь в том что в модели корзины у меня нет такого поля - стоимость, есть только цена. А стоимость формируется в шаблоне при нажатии на кнопку добавить 1 единицу товара отдельной функцией:

def cart_add(request, product_id):
product = Product.objects.get(id=product_id)
price = product.price
carts = Cart.objects.filter(user=request.user, product=product)

if not carts.exists():
    Cart.objects.create(user=request.user, product=product, quantity=1, price=price)
    return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
else:
    cart = carts.first()
    cart.quantity += 1
    **cart.price += price**
    cart.save()
    return HttpResponseRedirect(request.META.get('HTTP_REFERER'))

Модель корзины:

class Cart(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
quantity = models.PositiveIntegerField(default=0)
price = models.FloatField(default=0)
created_timestamp = models.DateTimeField(auto_now_add=True)

Как я понимаю придется заново модель корзины писать? Или как мне сделать так чтобы при добавлении товара через API, на сайте в шаблоне нормально формировалась стоимость общая товара?

Вот так выглядит корзина на сайте(первые 2 товара добавлены на сайте, последний товар через API):

введите сюда описание изображения

Спустя время разобрался сам, поэтому отвечу, вдруг пригодится:

В моделях можно использовать методы. Поэтому я написал в модели корзины такую штучку:

class Cart(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
quantity = models.PositiveIntegerField(default=0)
price = models.FloatField(default=0)
created_timestamp = models.DateTimeField(auto_now_add=True)

def get_total_price(self):
    return self.product.price * self.quantity

И теперь в шаблоне джанго можно к get_total_price() обращаться как к атрибуту класса, и все сработает.

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