Reduce number of queries required to render an entries list, especially the home page

This commit is contained in:
Danielle McLean 2018-01-24 13:18:22 +11:00
parent 957fc4ada7
commit 75e08aa1b2
Signed by untrusted user: 00dani
GPG key ID: 5A5D2D1AFF12EEC5
4 changed files with 42 additions and 12 deletions

View file

@ -16,11 +16,14 @@ def index(request, page):
def url(page):
kwargs = {'page': page} if page != 1 else {}
return reverse('home:index', kwargs=kwargs)
query = User.objects.prefetch_related('entries', 'profiles', 'keys')
user = get_object_or_404(query, pk=1)
entries = user.entries.filter(kind__in=kinds.on_home)
user = request.user
if not user:
user = get_object_or_404(User, pk=1)
entries = user.entries.filter(kind__in=kinds.on_home)
entries = pagination.paginate(queryset=entries, reverse=url, page=page)
# If we got a valid HTTP response, just return it without rendering.
if hasattr(entries, 'content'):
return entries