Я не могу найти способ аннотировать набор запросов со счетчиком того, сколько раз элемент используется в отношении «многие ко многим».
class Profile(models.Model):
[...]
# Profile can have multiple roles
roles = models.ManyToManyField('Role', blank=True)
[...]
class Role(models.Model):
company = models.ForeignKey(Company, on_delete=models.CASCADE)
name = models.CharField(blank=True, max_length=30)
description = models.CharField(blank=True, max_length=300)
[...]
Например, у меня будет 5Роли:
- Role1
- Role2
- Role3
- Role4
- Role5
И2 профиля с назначенными ролями:
Я хочу запросить модель роли и аннотировать номер профиля, которыйиметь эту роль.
Итак, верните набор запросов, например
Role1: company, name, description, profile_count=2
Role2: company, name, description, profile_count=1
и т. Д. *
Я пробовал это, но это не работает:
Role.objects.annotate(profile_count=Count('profile__roles'))
Этопохоже, возвращает общее количество, а не количество на роль.
Есть идеи, если это можно сделать изначально в Django или если необходим необработанный запрос SQL?
Спасибо!