2012-01-18 1 views
0

Я разработчик Django, и я застрял в проблеме обратного поиска посторонней клавиши. Проблема описана следующим образом:django reverse foreignkey lookup

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

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

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

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

+0

привет, добро пожаловать в SO! можете ли вы показать нам код моделей: «MicroMessage» и «Пользователь»? – aayoubi

+0

Вы можете показать образец кода, который вы пытаетесь оптимизировать? –

ответ

2

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

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

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