记录 django 外键关联统计
记录 django 外键关联统计
记录几个统计问题实例
- 从主机表统计每个主机的装服数量,
ServerModel
的host
字段关联HostModel
,在1.11
中实测可用。统计后的对象将额外生成一个__count
后缀的字段,并且可以用于排序
1 | HostModel.objects.using(gameName).values('id').annotate(Count('servermodel')).order_by('servermodel__count') |
- sum(x) .. group by field
如下PerformanceStatsModel 有字段[host_id(外键),mem1,mem2,mem3,created_date],想得到某机器在多天时各 mem 字段统计的总和数据。
这里的特点是annotate
注解(分组)会按 order_by 字段,若想按host_id分组,model中默认可能会是"-id"
排序。我们这里的结果必须用.values("host").order_by("host")
才能实现像 SQL 中的group by host_id
,最后annotate
中的参数与select sum(mem1) as mem_1, sum(mem2) as mem_2, sum(mem3) as mem_3 from ...
相同
1 | PerformanceStatsModel.objects.using(gameName).filter( |
Comments