Как подсчитать общее количество неразличимых отношений "многие ко многим" между объектами модели?

Предположим, что у меня есть следующие модели:

class Tag(Model):
  name = CharField()

class Book(Model):
  title = CharField()
  tags = ManyToManyField(Tag)

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

Book 1 (Tags = "tag1", "tag2", "tag3")
Book 2 (Tags = "tag1", "tag4", "tag5")
Book 3 (Tags = "tag4", "tag5", "tag6")

Как я могу подсчитать все неразличимые теги в запросе Django ORM так, чтобы в результате получить 9?

Вы можете считать с:

Book.tags.through.objects.count()

Это подсчитает количество тегов для всех Book. Если у вас есть набор Books, вы можете подсчитать с помощью:

Tag.objects.filter(book__in=[1, 2, 3]).count()
Вернуться на верх