Django: Аннотирование отдельных внешних отношений ManyToMany
Учитывая следующую упрощенную модельную установку
class Tag(models.Model):
name = CharField()
class Template(models.Model):
name = CharField()
tags = ManyToManyField(Tag)
class Collection(models.Model):
name = CharField()
templates = ManyToManyField(Template)
class GenericViewSet(viewsets.ModelViewSet):
def get_queryset():
...
queryset = Collection.objects.all()
queryset = queryset.annotate(tags=models.Distinct('templates__tags'))
...
Существует ли способ, подобный последней строке выше, аннотировать кверисет Collection
отдельным набором тегов, происходящих из его шаблонов?
Пример
(Template):
name: History 1
tags: [England, France]
(Template):
name: History 2
tags: [England, United States)
(Collection):
name: History of England
templates: [History 1, History 2]
tags: [England, France, United States]
Где теги коллекции являются производными от ее шаблонов.