подсчитать количество использований каждого из объектов в другой таблице - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть две модели:

class FirstTable(models.Model):
    name = models.CharField(...)


class SecondTable(models.Model):
    examples = models.ManyToManyField(FirstTable)

У меня есть функция, которая подсчитывает, сколько раз FirstTable используется в поле примеров SecondTable:

data = {}
for i in FirstTable.objects.all():
    data[i.name] = SecondTable.objects.filter(examples__exact=i).count()

, но возможно липолучить те же данные одним запросом?(совокупные или аннотированные способы)

1 Ответ

0 голосов
/ 17 декабря 2018

Вы можете сделать:

from django.db.models import Count

FirstTable.objects.annotate(examples_count=Count('secondtable')).values('name', 'examples_count')

Вывод будет:

<QuerySet [{'name': 'Name1', 'examples_count': 3}, {'name': 'Name2', 'examples_count': 10}, ..., >
...