From 3d189ba71100c3f165d7c453ff2b8f90a5dbf5ef Mon Sep 17 00:00:00 2001
From: Todd Dembrey <todd.dembrey@torchbox.com>
Date: Fri, 31 Aug 2018 13:41:15 +0100
Subject: [PATCH] Improve performance on related tags

---
 opentech/public/news/models.py   | 5 ++++-
 opentech/public/people/models.py | 8 +++++++-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/opentech/public/news/models.py b/opentech/public/news/models.py
index d57f6f118..dbb645c76 100644
--- a/opentech/public/news/models.py
+++ b/opentech/public/news/models.py
@@ -131,7 +131,10 @@ class NewsIndex(BasePage):
     def get_context(self, request, *args, **kwargs):
         news = NewsPage.objects.live().public().descendant_of(self).annotate(
             date=Coalesce('publication_date', 'first_published_at')
-        ).order_by('-date')
+        ).order_by('-date').prefetch_related(
+            'news_types__news_type',
+            'authors__author',
+        )
 
         if request.GET.get('news_type'):
             news = news.filter(news_types__news_type=request.GET.get('news_type'))
diff --git a/opentech/public/people/models.py b/opentech/public/people/models.py
index dd43e3b57..ceea639ad 100644
--- a/opentech/public/people/models.py
+++ b/opentech/public/people/models.py
@@ -172,7 +172,13 @@ class PersonIndexPage(BasePage):
     parent_page_types = ['standardpages.IndexPage']
 
     def get_context(self, request, *args, **kwargs):
-        people = PersonPage.objects.live().public().descendant_of(self).order_by('title')
+        people = PersonPage.objects.live().public().descendant_of(self).order_by(
+            'title',
+        ).select_related(
+            'photo',
+        ).prefetch_related(
+            'person_types__person_type',
+        )
 
         if request.GET.get('person_type'):
             people = people.filter(person_types__person_type=request.GET.get('person_type'))
-- 
GitLab