Как сделать total на Django models.p
Я пытаюсь получить общее количество, но я не знаю, почему я не получаю общее количество, и у меня есть код models.py и его вывод
class Order(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
items = models.ManyToManyField(OrderItem)
start_date = models.DateTimeField(auto_now_add=True)
table_num = models.CharField(max_length=50)
ordered_date = models.DateTimeField()
ordered = models.BooleanField(default=False)
def __str__(self):
return self.user.username
def total(self):
total = 0
for order_item in self.items.all():
total += order_item.get_total_item_price()
return total
Python Typo. Ошибка в отступах. Должно быть
for order_item in self.items.all():
total += order_item.get_total_item_price()
return total
Вы сразу возвращаете результат после первой итерации, вам следует использовать:
def total(self):
total = 0
for order_item in self.items.all():
total += order_item.get_total_item_price()
return total
или с sum(…):
def total(self):
return sum(order_item.get_total_item_price() for order_item in self.items.all())
Но лучше всего, вероятно, работать с .aggregate(…) [Django-doc].

