【发布时间】:2018-05-15 05:17:08
【问题描述】:
我需要查询,可以显示客户订购的衣服总数,结果应该是这样的:
客户_1 | Cloth_Type_X_SUM | Cloth_Type_Y_SUM | Cloth_Type_Z_SUM | SUM_ALL 客户_2 | Cloth_Type_X_SUM | Cloth_Type_Y_SUM | Cloth_Type_Z_SUM | SUM_ALL 客户_3 | Cloth_Type_X_SUM | Cloth_Type_Y_SUM | Cloth_Type_Z_SUM | SUM_ALL
models.py
class Cloth(models.Model):
description = models.CharField(max_length=30)
type = models.CharField(max_length=2)
class Order(models.Model):
client = models.ForeignKey(Client, on_delete=models.CASCADE)
date = models.DateTimeField(auto_now_add=True)
class Order_Detail(models.Model):
order = models.ForeignKey(Order, on_delete=models.CASCADE)
cloth = models.ForeignKey(Cloth, on_delete=models.CASCADE)
weight = models.FloatField()
我得到的最接近的是:
Order_Detail.objects.values('order__client__name','cloth__type').annotate(Sum('weight'))
这样做的问题是它会为每种布料类型检索一个对象:
Client_1 | Cloth_Type_X | SUM_X
Client_1 | Cloth_Type_Y | SUM_Y
Client_1 | Cloth_Type_Z | SUM_Z
Client_2 | Cloth_Type_X | SUM_X
Client_2 | Cloth_Type_Y | SUM_Y
Client_2 | Cloth_Type_Z | SUM_Z
Client_3 | Cloth_Type_X | SUM_X
Client_3 | Cloth_Type_Y | SUM_Y
Client_3 | Cloth_Type_Z | SUM_Z
没有更好的方法吗?
【问题讨论】:
-
您是否要按客户获取体重组?
-
是的,但不仅是总重量,还有每种布料类型的重量总和。
标签: sql django django-models subquery django-queryset