如何在 Django 上做总计 models.py

How to do total on Django models.py

我想得到总数,但我不知道为什么我没有得到总数,我有 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 打字错误。缩进错误。应该是

    for order_item  in self.items.all():
        total += order_item.get_total_item_price()
    return total

你在第一次迭代后立即return结果,你应该使用:

def total(self):
    total = 0 
    for order_item in self.items.all():
        total += order_item.get_total_item_price()
    <strong>return total</strong>

sum(…):

def total(self):
    return <strong>sum(</strong>order_item.get_total_item_price() for order_item in self.items.all()<strong>)</strong>

但最好的方法可能是使用 .aggregate(…) [Django-doc]