如何分组并返回每组的值?

时间:2013-07-25 10:01:49

标签: django django-views django-orm

我有这样的表

id p_id number 
1   1   12 
2   1   13
3   2   14
4   2   15

如何在我的视图中获取此类项目, 我的意思是按p_id分组并从组中获取数字值

for p_id 1 returns count 2 and 12,13
for p_id 2 returns count 2 and 14,15

1 个答案:

答案 0 :(得分:2)

您可以使用values()annotate()进行分组,因此:

from django.db.models import Count
pid_group = YourModel.objects.values('p_id').annotate(ncount=Count('number'))

之后,您将获得这样的词组pid_group列表:

[{'p_id': 1, 'ncount': 2}, {'p_id': 2, 'ncount': 2}]

您可以轻松获得数字值:

for pid in pid_group:
    number_values = YourModel.objects.filter(p_id=pid.get('p_id'))

希望它有所帮助。