2011-01-18 2 views
0

Так что я пытаюсь получить список записей в блоге, который имеет внешний ключ к автору:Django - Как я могу остановить этот запрос повторения?

На мой взгляд:

data = {'entries':Entry.objects.all()} 

Тогда в моем шаблоне:

<td valign="top">{{ entry.author }}</td> 

Это приводит к удалению базы данных по одной записи для получения деталей авторов. Я это понимаю, но когда автор тот же, есть ли способ «кешировать» результат? Например, если одна запись имеет отношение «1» автора, я могу сохранить результаты, поэтому, если какие-либо другие записи имеют одно и то же отношение автора, ему не нужно снова удалять базу данных?

Я уверен, что это должно быть возможно, но я не могу найти упоминания об этом в документации :(

ответ

6

Нет, но вы можете использовать QuerySet.select_related() тянуть в информации FK одновременно.

+0

Уверен, но это сделает объединение для каждого запроса. Не помогает. – Hanpan

+0

@Hanpan: 'Entries.objects.all(). Select_related ('author')' будет делать одно дополнительное соединение, чтобы вытащить 'Author 'table, но гарантирует, что не будет никаких дополнительных запросов, пока вы повторяете записи в своем шаблоне.Так, да, это действительно поможет. – sdolan

+0

Странно, просто использование select_related не сработало, но select_related ('author'). Извините за мое невежество! – Hanpan

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