小编Edw*_*man的帖子

计算Django中模型属性的总和

我有一个模型Order,它有一个order_total基于OrderItem外键链接的 s计算 a 的属性。

我想计算多个Order实例order_total属性的总和。

有没有办法做到这一点?

class Order(models.Model):
    customer = models.ForeignKey(Customer)
    placed = models.DateField()

    ...

    def get_total_cost(self):
        return sum(item.get_cost() for item in self.items.all())

    order_total = property(get_total_cost)


class OrderItem(models.Model):
    order = models.ForeignKey(Order, related_name="items")
    product = models.ForeignKey(Product, related_name="order_items")
    quantity = models.PositiveIntegerField(default=1)

    ...

    def get_cost(self):
        return self.product.price * self.quantity
Run Code Online (Sandbox Code Playgroud)

这是我的查询:

>>> Order.objects.all().aggregate(Sum("order_total"))
Run Code Online (Sandbox Code Playgroud)

返回此错误:

django.core.exceptions.FieldError: Cannot resolve keyword 'order_total' into field. Choices are: placed, customer, customer_id, id, items, paid
Run Code Online (Sandbox Code Playgroud)

python django django-models models

6
推荐指数
1
解决办法
3170
查看次数

标签 统计

django ×1

django-models ×1

models ×1

python ×1