From ad6688f2da05f23a7954da45b95014f0067edbed Mon Sep 17 00:00:00 2001 From: Sage Abdullah Date: Fri, 6 Oct 2023 19:33:03 +0100 Subject: [PATCH] Optimise queries in page listing views by prefetching workflow states of the parent page --- wagtail/admin/tests/pages/test_explorer_view.py | 2 +- wagtail/admin/views/pages/listing.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/wagtail/admin/tests/pages/test_explorer_view.py b/wagtail/admin/tests/pages/test_explorer_view.py index 592f44f5da..eeea1ec407 100644 --- a/wagtail/admin/tests/pages/test_explorer_view.py +++ b/wagtail/admin/tests/pages/test_explorer_view.py @@ -796,7 +796,7 @@ class TestInWorkflowStatus(WagtailTestUtils, TestCase): # Warm up cache self.client.get(self.url) - with self.assertNumQueries(50): + with self.assertNumQueries(47): response = self.client.get(self.url) self.assertEqual(response.status_code, 200) diff --git a/wagtail/admin/views/pages/listing.py b/wagtail/admin/views/pages/listing.py index 2bb2d4aa1b..45741980b9 100644 --- a/wagtail/admin/views/pages/listing.py +++ b/wagtail/admin/views/pages/listing.py @@ -73,7 +73,9 @@ class IndexView(PermissionCheckedMixin, BaseListingView): def get(self, request, parent_page_id=None): if parent_page_id: - self.parent_page = get_object_or_404(Page, id=parent_page_id) + self.parent_page = get_object_or_404( + Page.objects.all().prefetch_workflow_states(), id=parent_page_id + ) else: self.parent_page = Page.get_first_root_node()