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