Получите все связанные объекты "многие-ко-многим" из Django QuerySet
У меня есть извилистый лабиринт взаимосвязанных моделей Django с полями "многие-ко-многим", описывающие отношения.
Какой самый чистый способ получить список уникальных элементов связанной модели из QuerySet?
Если у меня есть модель Item с группами ManyToMany, указывающими на модель групп.
Если у меня есть набор запросов элементов "элементов", как это сделать:
groups = items[0].groups.all().values_list('name', flat=True)
Но для всего набора? Нужно ли перебирать все их и делать set(). Intersect()?
Ответы
Ответ 1
Одним из решений является использование 2 запросов.
Вы можете использовать обратные отношения, чтобы запросить все Group
, что Item
в ваших items
указывает на.
groups = groups.objects.filter(item__in=items).distinct().values_list('name', flat=True)