Учитывая модель Django с двумя полями M2M:
class Book(models.Model):
name = models.CharField(max_length=300)
authors = models.ManyToManyField(Author)
publishers = models.ManyToManyField(Publisher)
И начиная с набора запросов авторов:
authors = Author.objects.filter(...)
Как я могу аннотировать счет от числа издателей (неисключительных), с которыми автор .... взаимодействовал?
Я могу получить количество книг, которые есть у автора:
authors.objects.annotate(num_books=Count('book'))
Но что я хочуявляется подсчетом числа издателей для всех книг.
Например, если данные были такими:
Book | Authors | Publishers
B1 A1 P1, P2
B2 A2, A1 P1
B2 A2 P1, P2, P3
...
Полученные аннотированные подсчеты будут:
Author | Publishers
A1 3 (B1-P1, B1-P2, B2-P1)
A2 4 (B2-P1, B3-P1, B3-P2, B3-P3)
...