django:按特定固定时间段聚合日志条目

时间:2011-07-19 04:07:56

标签: django aggregate

我的数据库中有一个日志表,用于保存所有用户操作。在此表中有一个名为“money”的列,表示该用户当天有多少钱(每个日志条目还有一个'timestamp'列)

如何从按周或按月分组的表格中检索数据,并将其与平均物有所值汇总?

1 个答案:

答案 0 :(得分:1)

最简单的方法是预先计算周和/或月,并将数据存储到另一个字段中。然后查询就像YourTable.objects.values('week', 'year').annotate(Avg('money))一样简单。

也应该能够使用extra()参数执行此操作,但这有时很棘手。那看起来像是

YourTable.objects.extra(select={
     'week': 'some_method_to_calculate_week_from_timestamp(timestamp)'
}).values('week').annotate(Avg('money'))

在第二种情况下,如何从时间戳计算周数取决于您的数据库。如果postgres您需要的信息将在这里:http://www.postgresql.org/docs/8.1/static/functions-datetime.html