Django, общая цена не итерируемого объекта

Здравствуйте у меня вопрос я понятия не имею как я могу получить общую стоимость не итерируемого объекта в Django, я получаю эту ошибку:

TypeError at /cart
'OrderItem' object is not iterable

Вот мой код, буду рад любому совету.

views.py

order_items = OrderItem.objects.filter(cart=cart)
    order_items = OrderItem.objects.annotate(
        sum=Sum(F('item__price') * F('quantity'))
    ).get(cart=cart)
order_items.total_price = order_items.sum
order_items.save(force_update=True)

models.py

class Item(Visits, models.Model):
    title = models.CharField(max_length=150)
    price =  models.IntegerField(default=1000)
    image = models.ImageField(upload_to='pictures', default='static/images/man.png')
    description = models.TextField(default="Item")
    visits = models.IntegerField(default=0)

class OrderItem(models.Model):
    cart = models.ForeignKey('Cart', on_delete=CASCADE, null=True)
    item = models.ForeignKey(Item, on_delete=CASCADE, null=True)
    quantity = models.IntegerField(default=1)
    total_price = models.IntegerField(default=1)

Вы можете создать функцию в вашей модели и использовать результат в вашем представлении вот так:

class OrderItem(models.Model):
cart = models.ForeignKey('Cart', on_delete=CASCADE, null=True)
item = models.ForeignKey(Item, on_delete=CASCADE, null=True)
quantity = models.IntegerField(default=1)
# does not needed
# total_price = models.IntegerField(default=1)

@property
def get_total(self):
    total = self.item.price * self.quantity
    return total
Вернуться на верх