django orm 分组统计信息收集率

有大概这么一个表

 

City   information  person

上海   已收集             A

上海    未收集           B

上海    已收集           C

杭州     未收集         D

杭州     未收集          E

 

希望能够统计出每个城市的人数,及对应的信息收集率,同时城市名字转化为相应城市代码,类似如下结构的返回供前端使用,有什么好的思路不?谢谢

[{‘city’:021,‘person’:3 ,info_rate: 66.66%},{...}]

 

 

# 每个城市的已收集

info = Table.objects.filter(information='已收集').values("city").annotate(cnt=Count("screen_id"))

# 每个城市的总人数

person = Table.objects.filter().values("city").annotate(cnt=Count("screen_id"))

# 然后对比上面两个,就能算出来百分比

# 相应城市代码,这个应该是有其它的表,或者其它的字段,甚至其它的数据来源来承载的,可以说得更清楚一些。

城市代码要加在表里,通过代码爬取相应接口数据.