我试图做一个“group by”来拉出一个测验所有者测验中所有猜测的列表,分组由用户进行注释并且用对用户已经做出多少次猜测的计数进行了注释。Django“group by”via annotations:从.value()获取对象对一个ID
相关机型:
class Quiz(models.Model):
user = models.ForeignKey(User)
...
class Guess(models.Model):
user = models.ForeignKey(User)
quiz = models.ForegnKey(Quiz)
...
这个查询:
guessors = Guess.objects.filter(quiz__user=request.user).values('user').annotate(cnt=Count('user')).order_by('cnt')
返回这样的事情,这是非常接近我所需要的:
{'cnt': 5, 'user': 5}
{'cnt': 3, 'user': 4}
{'cnt': 2, 'user': 3}
{'cnt': 1, 'user': 2}
注意,但是,当我想要的是一个完整的用户对象时,'user'被作为int返回。有关如何最有效地获取完整用户对象的任何建议?
注:我在Django 1.3上 – mitchf 2011-04-23 03:54:49