Django - Вывод данных из связанных таблиц

Есть две таблицы, которые связанны между собой, как мне вывести количество студентов, которые связанны с конкретной категорией. Например:

"Какое-то наименование" - 22

"Еще какое-то наименование" - 10

Пытался через related_name и через filter, все мимо.

class Management(models.Model):
    keyPeriods = models.ForeignKey(Periods, on_delete=models.CASCADE, related_name='school', verbose_name='Школа')
    title = models.CharField(max_length=500, verbose_name="Наименование")

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('management_view', kwargs={"management_id": self.pk})


class Students(models.Model):
    keyPeriod = models.ForeignKey(Periods, on_delete=models.CASCADE, related_name='period',
                                  verbose_name='Школа')
    keyManagement = models.ForeignKey(Management, on_delete=models.CASCADE, related_name='management', verbose_name='Учреждение|Рук-ль')
    surname = models.CharField(max_length=300, verbose_name='Фамилия')
    name = models.CharField(max_length=300, verbose_name='Имя')
    patronymic = models.CharField(max_length=300, verbose_name='Отчество')
    birthday = models.DateField(verbose_name='Дата рождения')
    sex = models.CharField(max_length=1, choices=SEX, verbose_name='Пол')
    snils = models.CharField(max_length=100, verbose_name='СНИЛС')
    contract_date = models.DateField(verbose_name='Дата контракта')
    contract_number = models.CharField(max_length=300, verbose_name='Номер контракта')

Ответы (1 шт):

Автор решения: Iaroslav Lukianchik

Я бы попробовал все же через filter. Вы же по полю Managment.title хотите фильтровать и считать студентов? Если да, то вот пример:

Students.objects.filter(keyManagement__title='Какое-то наименование').count()

Финальный вариант:

# получаем все обьекты Management и подсчитываем количество студентов для каждого:
management_set = Management.objects.annotate(num_students=Count('management'))

# перебираем каждый объект и выводим на консоль:
for management in management_set:
    print(f'{management.title} : {management.num_students}')

# результат:
test_management_1 : 2
test_management_2 : 1
test_management_3 : 0
→ Ссылка