2012-12-24 121 views
1

我希望在django上做类似SQL的“Group by,Count”。这里是我当前的代码的进展:Django注释问题

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的“分组依据,计数”?如果是,我应该如何获得计数值?

+0

您正在使用'Count'上'文字field'为什么? –

回答

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') 
+0

嗯,为什么我的“tag.tag_count”给出错误? - >'dict'对象没有任何属性'tag_count' – jdtoh

+0

哦,抱歉,由于'group by'尝试'tag ['tag_count']' –

+0

谢谢!有用! – jdtoh