我試圖做一個「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