Prevent n+1 queries when rendering timelines (#165)

The linkify_mentions function is traversing the post's mentions, so
better prefetch those.
This commit is contained in:
Gabriel Rodríguez Alberich 2022-12-14 18:16:22 +01:00 committed by GitHub
parent d1ce056288
commit 8db05bed95
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -25,7 +25,7 @@ class Home(FormView):
type__in=[TimelineEvent.Types.post, TimelineEvent.Types.boost],
)
.select_related("subject_post", "subject_post__author")
.prefetch_related("subject_post__attachments")
.prefetch_related("subject_post__attachments", "subject_post__mentions")
.order_by("-created")[:50]
)
context["interactions"] = PostInteraction.get_event_interactions(
@ -70,7 +70,7 @@ class Tag(ListView):
Post.objects.public()
.tagged_with(self.hashtag)
.select_related("author")
.prefetch_related("attachments")
.prefetch_related("attachments", "mentions")
.order_by("-created")[:50]
)
@ -99,7 +99,7 @@ class Local(ListView):
return (
Post.objects.local_public()
.select_related("author")
.prefetch_related("attachments")
.prefetch_related("attachments", "mentions")
.order_by("-created")[:50]
)
@ -127,7 +127,7 @@ class Federated(ListView):
visibility=Post.Visibilities.public, in_reply_to__isnull=True
)
.select_related("author")
.prefetch_related("attachments")
.prefetch_related("attachments", "mentions")
.order_by("-created")[:50]
)