Получить всех пользователей с группами пользователей - PullRequest
0 голосов
/ 12 июля 2019

Я пытаюсь написать метод, который может вернуть всех пользователей из django defaultDb. Следующее приведёт ко всем пользователям:

User.objects.all()

Теперь я хочу добавить группы пользователей к каждому пользователю как часть моего ответа. Я знаю, что могу проанализировать каждого пользователя и получить группу пользователей, например:

user.groups.values_list('name',flat=True)

Но я чувствую, что это очень дорогая операция, поскольку она включает чтение из базы данных для n пользователей. Есть ли другой лучший способ сделать это?

1 Ответ

0 голосов
/ 12 июля 2019

Вы можете использовать prefetch_related , чтобы выбрать все связанные группы в 1 дополнительном запросе

User.objects.prefetch_related('groups')

Теперь вы можете зацикливаться на всех пользователях, а затем получать доступ к каждой группе пользователей без дополнительных обращений к БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...