django聚合多天

时间:2015-08-08 22:04:20

标签: django database performance aggregate

我有一个模型,它有两个属性:日期和长度以及其他不相关的属性。我需要在模板中显示每天的长度总和列表。

我到目前为止使用的解决方案是逐日循环并使用聚合创建总和列表:

for day in month:
    sums.append(MyModel.objects.filter(date=date).aggregate(Sum('length')))

但由于db查找的数量,对我来说似乎非常无效。难道没有更好的方法吗?喜欢缓存所有内容然后过滤它而不触及db?

1 个答案:

答案 0 :(得分:2)

public class Venue implements Serializable { ... @OneToMany @JsonBackReference public List<Workshop> getWorkshops() { return workshops; } ... } 可用于按.values()进行分组,因此您只能通过{{1}获得唯一日期以及date字段的总和}:

length

来自docs

  

.values()子句用于约束结果集中返回的列时,评估注释的方法略有不同。原始结果不是为原始QuerySet中的每个结果返回带注释的结果,而是根据 .values()子句中指定的字段的唯一组合进行分组。

希望这有帮助。