From b9d3e44ebf1b146987338c137c9bb867a81f52fd Mon Sep 17 00:00:00 2001 From: Karl Hobley Date: Tue, 24 Jun 2014 14:28:40 +0100 Subject: [PATCH] Use get_indexed_objects to speed up indexing of Images/Documents Previously, this created a query for every single image and document to get the tags. This was very slow on RCA which has over 15000 images. This commit fixes this by adding a prefetch_related to the QuerySet used for indexing. --- wagtail/wagtailadmin/taggable.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/wagtail/wagtailadmin/taggable.py b/wagtail/wagtailadmin/taggable.py index 91c36ca7f..3b7de479c 100644 --- a/wagtail/wagtailadmin/taggable.py +++ b/wagtail/wagtailadmin/taggable.py @@ -21,7 +21,11 @@ class TagSearchable(indexed.Indexed): @property def get_tags(self): - return ' '.join([tag.name for tag in self.tags.all()]) + return ' '.join([tag.name for tag in self.prefetched_tags()]) + + @classmethod + def get_indexed_objects(cls): + return super(TagSearchable, cls).get_indexed_objects().prefetch_related('tagged_items__tag') @classmethod def search(cls, q, results_per_page=None, page=1, prefetch_tags=False, filters={}):