2016-06-15 2 views
0

Скажем, у меня есть реляционная модель базы данных, как так:2 или более внешних ключей уровни Джанго QuerySet

loan связан с 1 customer. Он содержит несколько книг. Каждый book имеет 1 author. В Django queryset я хочу получить описание автора для всех кредитов.

Таким образом, используя get_related, я только попал в БД один раз, а не несколько раз, если я это сделать:

loans = Loan.objects.filter(id=current_loan).get_related('consists_of_book') 

Как я могу продлить это внешний ключ author? Ответ на этот вопрос не выглядит как правильный ответ мне:

loans = Loan.objects.filter(id=current_loan).get_related('consists_of_book').get_related('written_by_author') 
+1

Пожалуйста, покажите реальный код. В Django-запросах нет метода 'get_related'. –

+1

В наборе запросов нет метода 'get_related'. Существует 'select_related'. Уровни разделяются на «__» (2 подчеркивания). Я думаю, вам нужно что-то вроде этого: 'loans = Loan.objects.filter (id = current_loan) .select_related ('consist_of_book', 'consist_of_book__writen_by_author')' – sinitsynsv

ответ

1

Вы просто должны использовать двойное подчеркивание обозначения следующим образом:

loans = Loan.objects.filter(id=current_loan) 
    .prefetch_related('consists_of_book', 'consists_of_book__written_by_author') 
+0

Я бы сказал, что 'select_related' также выполнит трюк с моими моделями БД, будет обрабатывать общий случай. В точку! – bryansis2010

Смежные вопросы