Я пытаюсь сделать эквивалент «group by», чтобы получить список всех догадок в опросах владельца викторины, сгруппированных по пользователю и помеченных подсчетом того, сколько предположений сделал этот пользователь.
Соответствующие модели:
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}
Обратите внимание, однако, что «пользователь» возвращается как int, когда то, что я хочу, является полным объектом User. Какие-нибудь предложения относительно того, как мне наиболее эффективно получить полный объект User?