Django Annotate问题

时间:2012-12-24 17:41:37

标签: python django django-models django-queryset

我希望在django上做类似SQL的“Group by,Count”。以下是我目前的代码进度:

tags = tag.objects.values('tag').annotate(Count('tag')).order_by()

标签类:

class tag(models.Model):
    id = models.IntegerField('id',primary_key=True,null=False)
    question_id = models.ForeignKey(question,null=False)
    tag = models.TextField('tag',null=True)

所以,我的问题是上面的查询是否可以获得类似SQL的“Group by,Count”?如果是,我该如何获得计数值?

1 个答案:

答案 0 :(得分:1)

您可以存储带注释的值:

tags = tag.objects.values('tag').annotate(tag_count=Count('tag')).order_by()
for tag in tags:
    print tag['tag_count']

您也可以在order_by中使用带注释的值:

tags = tag.objects.values('tag').annotate(tag_count=Count('tag')).order_by('-tag_count')