Получить все связанные много-много объектов из Django QuerySet - PullRequest
13 голосов
/ 28 января 2011

У меня сложный лабиринт взаимосвязанных моделей Django с полями «многие ко многим», описывающими отношения.

Какой самый простой способ получить список уникальных членов связанной модели из QuerySet?

Если у меня есть модель Item с группами ManyToMany, указывающими на модель Groups.

Если у меня есть набор запросов Items, 'items', как мне получить это:

groups = items[0].groups.all().values_list('name', flat=True)

Но для всего набора?Нужно ли перебирать их все и делать set (). Intersect ()?

1 Ответ

18 голосов
/ 28 января 2011

Одним из решений является использование 2 запросов.

Вы можете использовать обратные отношения для запроса всех Group s, на которые указывает Item в ваших items.

groups = groups.objects.filter(item__in=items).distinct().values_list('name', flat=True)
...