From 89fad597936de520284c08c860b286632a6d39b2 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 20 Sep 2021 15:25:29 -0700 Subject: [PATCH] Query efficiency in user view --- bookwyrm/templatetags/bookwyrm_tags.py | 6 +++--- bookwyrm/views/user.py | 14 ++++++++++++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/bookwyrm/templatetags/bookwyrm_tags.py b/bookwyrm/templatetags/bookwyrm_tags.py index 30a48e90..e00a8331 100644 --- a/bookwyrm/templatetags/bookwyrm_tags.py +++ b/bookwyrm/templatetags/bookwyrm_tags.py @@ -12,7 +12,7 @@ register = template.Library() def get_rating(book, user): """get the overall rating of a book""" queryset = views.helpers.privacy_filter( - user, models.Review.objects.filter(book__in=book.parent_work.editions.all()) + user, models.Review.objects.filter(book__parent_work__editions=book) ) return queryset.aggregate(Avg("rating"))["rating__avg"] @@ -73,7 +73,7 @@ def active_shelf(context, book): shelf = ( models.ShelfBook.objects.filter( shelf__user=context["request"].user, - book__in=book.parent_work.editions.all(), + book__parent_work__editions=book, ) .select_related("book", "shelf") .first() @@ -97,4 +97,4 @@ def mutuals_count(context, user): viewer = context["request"].user if not viewer.is_authenticated: return None - return user.followers.filter(id__in=viewer.following.all()).count() + return user.followers.filter(followers=viewer).count() diff --git a/bookwyrm/views/user.py b/bookwyrm/views/user.py index e335b02c..ca6eb0a5 100644 --- a/bookwyrm/views/user.py +++ b/bookwyrm/views/user.py @@ -59,8 +59,18 @@ class User(View): request.user, user.status_set.select_subclasses(), ) - .select_related("reply_parent") - .prefetch_related("mention_books", "mention_users") + .select_related( + "user", + "reply_parent", + "review__book", + "comment__book", + "quotation__book", + ) + .prefetch_related( + "mention_books", + "mention_users", + "attachments", + ) ) paginated = Paginator(activities, PAGE_LENGTH)