计算django模型中的平均值

时间:2017-03-17 23:41:39

标签: python django python-3.x web

我需要找出客户订单的平均数量。我如何使用django的模型做到这一点?

from django.db import models

class Customer(models.Model):
    name = models.CharField(max_length=200)
    phone = models.CharField(max_length=17)
    average_quantity_size = ?

class Order(models.Model):
    customer = models.ForeignKey(Customer)
    quantity = models.PositiveSmallIntegerField()
    date = models.DateField()
    time = models.TimeField()

2 个答案:

答案 0 :(得分:0)

这不是模范领域。它应该是一个属性。

class Customer(models.Model):
    name = models.CharField(max_length=200)
    phone = models.CharField(max_length=17)

    @property
    def average_quantity_size(self):
        qty = self.order_set.values_list('quantity', flat=True)
        if not qty:
            return 0
        return sum(qty)/len(qty)

可以在此处阅读反向查找:Lookups that span a relationship

答案 1 :(得分:0)

也许Aggregation可能会有所帮助。 它仍然是一个财产,但可能采取这种形式:

@property
def average_quantity_size(self):
    result = self.orders.aggregate(Avg('quantity'))
    return result

但我强烈建议您查看上面链接的聚合文档以获得更清晰的图片。祝你好运。