Однако я бы хотел как-нибудь прокомментировать количество тренировок, которые человек посещает для определенного клуба.
Давайте посмотрим.
Сначала найдите конкретныйclub.
club = Club.objects.get(**conditions)
Далее отфильтруйте всех лиц, которые практиковали в этом клубе.
persons = Person.objects.filter(practicerecord__Practice__Club = club)
Теперь добавьте аннотации к счету.
q = persons.annotate(count = Count('practicerecord'))
Редактировать
Мне удалось успешно выполнить эту работу в моей тестовой настройке: Django 1.2.3, Python 2.6.4, Postgresql 8.4, Ubuntu Karmic.
PS: Хорошая идея ™ - использовать строчные имена для полей.Это значительно упрощает использование синтаксиса двойного подчеркивания (__
) для объединения полей.Например, в вашем случае Django автоматически создает practicerecord
для каждого Person
.Когда вы пытаетесь получить доступ к другим полям PracticeRecord
через это поле, вы должны помнить, чтобы использовать регистр заголовка.
Если бы вы использовали строчные буквы, вы могли бы написать:
persons = Person.objects.filter(practicerecord__practice__club = club)
# ^^ ^^
, что выглядит гораздо более равномерно.
PPS : Это Count('practicerecord')
(обратите внимание на нижний регистр).