Django «группировать по» с помощью аннотаций: получить объект из .value () вместо идентификатора

Я пытаюсь выполнить аналог «группы по», чтобы получить список всех предположений владельца викторины » s викторины, сгруппированные по пользователям и снабженные аннотациями с указанием количества предположений, сделанных пользователем.

Соответствующие модели:

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, когда мне нужен полный объект User. Есть какие-нибудь предложения относительно того, как мне наиболее эффективно получить полный объект User?

5
задан mitchf 23 April 2011 в 03:39
поделиться