Django Queryset аннотирует на основе уникального значения

Я пытаюсь написать операцию queryset, которая преобразует первую таблицу во вторую как можно эффективнее. Вот критерий: Для каждого названия, сколько уникальных школ связано с ним? Кроме того, точные имена и школы заранее неизвестны.

Name School
John USC
John USC
John UCLA
Adam UCSD
Adam USC
Name num_unique_schools
John 2
Adam 2

1- Использование метода Values:

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

2- Использование метода Count с аргументом distinct:

Это подсчет сгруппированных имен учеников на основе "школы", также удаляются дубликаты школ.

подобно этому:


from django.db import models
    
results = StudentSchool.objects.values('name').annotate(
    num_unique_schools = models.Count('school', distinct=True)
).order_by("name")

Тестовый случай

enter image description here

Вернуться на верх