Django 1.1.1
Models.py:
class Datapoint(models.Model):
parameter1 = models.FloatField()
parameter2 = models.FloatField()
我想将parameter1的值加到最接近的整数(或其他舍入),然后返回此bin的两个参数的平均值。
在SQL中,我会执行以下操作:
select round(parameter1,0),
avg(parameter1),
avg(parameter2)
from Datapoints
group by round(parameter1,0)
order by round(parameter1,0)
我可以在django视图中使用聚合查询集来实现相同的效果,还是只能直接按字段分组?
或者,有没有办法将舍入值设置为模型中的元字段,并在视图中引用它?
答案 0 :(得分:2)
这应该有效:
from django.db.models import Avg
Datapoint.objects.extra(
select={'rounded_param1': 'ROUND(parameter1)'}
).values('rounded_param1').annotate(Avg(parameter1)).annotate(Avg(parameter2))
查看从该查询生成的SQL显示它确实对舍入值确实是GROUP BY。