Аннотировать и агрегировать в Джанго - PullRequest
1 голос
/ 03 марта 2011

В django у меня есть следующие таблицы, и я пытаюсь подсчитать количество голосов по элементам.

class Votes(models.Model):
    user = models.ForeignKey(User)
    item = models.ForeignKey(Item)


class Item(models.Model):
    name = models.CharField()
    description = models.TextField()

У меня есть следующий набор запросов

queryset = Votes.objects.values('item__name').annotate(Count('item'))

, который возвращает список с именем элемента и количеством просмотров, но не с объектом. Как я могу настроить его так, чтобы объект возвращался вместо просто строкового значения? Я возился с методами Manager и Queryset, это правильный путь? Любой совет будет оценен.

1 Ответ

2 голосов
/ 03 марта 2011

Вы можете попробовать что-то такое:

queryset = Votes.values.annotate(t_count=Count('item'))

Чтобы получить значение счетчика первого объекта голосования:

queryset[0].t_count

или получить объект элемента:

Item.objects.annotate(i_count=Count('votes'))
...