fix: N+1 query on PageListView

This commit is contained in:
imperosol
2025-09-22 18:11:02 +02:00
parent 34b0dc3302
commit acb6c6ce9c
3 changed files with 63 additions and 15 deletions

View File

@@ -43,23 +43,25 @@ class CanEditPagePropMixin(CanEditPropMixin):
return res
class PageListView(CanViewMixin, ListView):
class PageListView(ListView):
model = Page
template_name = "core/page_list.jinja"
queryset = (
Page.objects.annotate(
display_name=Coalesce(
Subquery(
PageRev.objects.filter(page=OuterRef("id"))
.order_by("-date")
.values("title")[:1]
),
F("name"),
def get_queryset(self):
return (
Page.objects.viewable_by(self.request.user)
.annotate(
display_name=Coalesce(
Subquery(
PageRev.objects.filter(page=OuterRef("id"))
.order_by("-date")
.values("title")[:1]
),
F("name"),
)
)
.select_related("parent")
)
.prefetch_related("view_groups")
.select_related("parent")
)
class PageView(CanViewMixin, DetailView):