我有一个这样的数据库表:
id|type_id | col1 | col2 | col3
0 | 1 | 2 | b | c
1 | 2 | 1 | a | a
2 | 2 | 2 | a | c
3 | 1 | 3 | b | c
我需要编写一个查询集以具有:
[{'id':1, 'count_col1': 5, 'type_id__name':balh, 'col2':b},{'id':2, 'count_col1':3, 'type_id__name': balab, 'col2':a}]
我该怎么做?可以通过groupby在熊猫中完成,但是我不知道如何在这里完成。
答案 0 :(得分:1)
您似乎希望为每个col1
计算id
的总和。我们可以这样:
from django.db.models import F, Sum
Model.objects.values('type_id').annotate(
type_name=F('type__name'),
count_col1=Sum('col1')
).order_by('type_id')
这将构建QuerySet
的字典,其外观如下:
<QuerySet [
{'type_id': 1, 'type_name': 'foo', 'count_col1': 5},
{'type_id': 2, 'type_name': 'bar', 'count_col1': 3}
]>
,或者如果要包含col2
:
from django.db.models import F, Sum
Model.objects.values('type_id', 'col2').annotate(
type_name=F('type__name'),
count_col1=Sum('col1')
).order_by('type_id', 'col2')