Если вы хотите получить все записи, связанные с каждым Blog
, вы можете сделать что-то вроде:
blogs = Blog.objects.all()
for blog in blogs:
blog.cached_entries = blog.entry_set.all()
Хотя это выглядит аккуратно, будет выполнено n + 1
запросов - 1 запрос на получениевсе блоги плюс n запросов для получения каждой записи, связанной с блогом.
Это можно сделать всего одним запросом, но вам придется выполнять больше работы, если вы хотите разделить записи по блогам.
blog_with_entries = []
entries = Entry.objects.order_by('blog')
previous_blog = None
acc_entries = [] # accumulate entries of one blog
for entry in entries:
if previous_blog != entry.blog:
if previous_blog is not None:
blog_with_entries.append((previous_blog, acc_entries))
acc_entries = []
previous_blog = entry.blog
acc_entries.append(entry)
blog_with_entries.append((previous_blog, acc_entries))