在一个模型 Django 中注释
Annotate in one model Django
查看我的模型
https://github.com/rg3915/morris/blob/master/myproject/core/models.py
如何 return 百分比 'uf' ?
示例:
'uf','quant'
'AM',8
'SP',9
'RJ',4
我试试
p=Person.objects.values('uf').annotate(quant=Count('uf', distinct=True)).values_list('uf','quant')
print(p.query)
但是return
SELECT "core_person"."uf", COUNT(DISTINCT "core_person"."uf") AS "quant" FROM "core_person" GROUP BY "core_person"."uf", "core_person"."first_name" ORDER BY "core_person"."first_name" ASC
我需要
SELECT "core_person"."uf", COUNT(DISTINCT "core_person"."uf") AS "quant" FROM "core_person" GROUP BY "core_person"."uf" ORDER BY "core_person"."uf" ASC
根据您的示例,我假设您要检索州列表和属于该州的总人数。
您的尝试非常接近,但是缺少 order_by()
可以让您选择订单字段。
因此您的查询应如下所示:
Person.objects.values('uf').annotate(quant=Count('uf')).order_by('uf').values_list('uf','quant')
我希望您会注意到我还从 Count
函数中删除了 distinct=True
参数,因为我们希望能够对所有相似的结果进行分组。
查看我的模型
https://github.com/rg3915/morris/blob/master/myproject/core/models.py
如何 return 百分比 'uf' ?
示例:
'uf','quant'
'AM',8
'SP',9
'RJ',4
我试试
p=Person.objects.values('uf').annotate(quant=Count('uf', distinct=True)).values_list('uf','quant')
print(p.query)
但是return
SELECT "core_person"."uf", COUNT(DISTINCT "core_person"."uf") AS "quant" FROM "core_person" GROUP BY "core_person"."uf", "core_person"."first_name" ORDER BY "core_person"."first_name" ASC
我需要
SELECT "core_person"."uf", COUNT(DISTINCT "core_person"."uf") AS "quant" FROM "core_person" GROUP BY "core_person"."uf" ORDER BY "core_person"."uf" ASC
根据您的示例,我假设您要检索州列表和属于该州的总人数。
您的尝试非常接近,但是缺少 order_by()
可以让您选择订单字段。
因此您的查询应如下所示:
Person.objects.values('uf').annotate(quant=Count('uf')).order_by('uf').values_list('uf','quant')
我希望您会注意到我还从 Count
函数中删除了 distinct=True
参数,因为我们希望能够对所有相似的结果进行分组。