Django обратный поиск иностранных ключей - PullRequest
0 голосов
/ 18 января 2012

Я разработчик Django, и у меня возникла проблема с обратным поиском по иностранным ключам. Проблема описывается следующим образом:

Я работаю над оптимизацией запросов. У меня есть модель MicroMessage с иностранным ключом, равным User (от django.contrib.auth.models) как author. Также есть некоторые другие классы, которые также имеют иностранный ключ для User (например, UserProfile).

Мне нужен запрос, который получит автора MicroMessage, а также всех пользователей, связанных с любой другой моделью, из которой я могу получить доступ к информации UserProfile этого автора без каких-либо чрезмерных запросов. Я попробовал это:

MicroMessage.objects.select_reverse({'authors':'author_set'})

Пожалуйста, помогите мне. Заранее спасибо.

1 Ответ

2 голосов
/ 18 января 2012

Вы ищете select_related https://docs.djangoproject.com/en/dev/ref/models/querysets/#select-related

messages = MicroMessage.objects.select_related('author', 'author__userprofile')

Второе поле (профиль пользователя) является обратным внешним ключом, но если оно реализовано в виде OneToOneField, как предлагают документы, его можно запросить, как показано выше, если класс был назван UserProfile.

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