我需要找出客户订单的平均数量。我如何使用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()
答案 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
但我强烈建议您查看上面链接的聚合文档以获得更清晰的图片。祝你好运。