我需要在 Django 中执行以下查询:
SELECT sum(T.width * T.height) as amount
FROM triangle T
WHERE T.type = 'normal'
GROUP BY S.color
我怎样才能使用你的 django ORM 来做到这一点?
我试过这个:
Triangle.objects.filter(type='normal').\
extra(select={'total':'width*height'}).\
values('id', 'total').\
annotate(amount=Sum('total'))
但它不起作用,我得到的错误是 TOTAL 不在模型中。我该如何修复它?
您可以执行以下操作:
Triangle.objects.filter(type="normal").values('color').annotate(amount=Sum('id', field="width * height")
这将产生以下查询(为了便于阅读,我进行了简化):
SELECT color, sum(width * height) as amount
FROM triangle
WHERE type = 'normal'
GROUP BY color
注意:我假设color
是一个领域Triangle
与其他领域一样的模型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)