diff --git a/wagtail/wagtailadmin/taggable.py b/wagtail/wagtailadmin/taggable.py index 56b4f9d82..d174c16a6 100644 --- a/wagtail/wagtailadmin/taggable.py +++ b/wagtail/wagtailadmin/taggable.py @@ -21,10 +21,6 @@ class TagSearchable(index.Indexed): ]), ], name='search_fields on TagSearchable subclasses') - @classmethod - def get_indexed_objects(cls): - return super(TagSearchable, cls).get_indexed_objects().prefetch_related('tagged_items__tag') - @classmethod def popular_tags(cls): content_type = ContentType.objects.get_for_model(cls) diff --git a/wagtail/wagtailimages/tests/test_models.py b/wagtail/wagtailimages/tests/test_models.py index 58a715d68..146e69ad2 100644 --- a/wagtail/wagtailimages/tests/test_models.py +++ b/wagtail/wagtailimages/tests/test_models.py @@ -132,6 +132,21 @@ class TestImageQuerySet(TestCase): results = Image.objects.order_by('-title').search("Test") self.assertEqual(list(results), [zzz_image, aaa_image]) + def test_search_indexing_prefetches_tags(self): + for i in range(0, 10): + image = Image.objects.create( + title="Test image %d" % i, + file=get_test_image_file(), + ) + image.tags.add('aardvark', 'artichoke', 'armadillo') + + with self.assertNumQueries(2): + results = { + image.title: [tag.name for tag in image.tags.all()] + for image in Image.get_indexed_objects() + } + self.assertTrue('aardvark' in results['Test image 0']) + class TestImagePermissions(TestCase): def setUp(self):