comment rate added to serilizer and user detail added too

This commit is contained in:
Parsa Nazer
2026-05-18 14:42:15 +03:30
parent 99f82c88c6
commit c2bbe1b8ec
2 changed files with 43 additions and 1 deletions
+23 -1
View File
@@ -590,8 +590,30 @@ class CommentView(APIView):
).select_related('user')
paginator = self.pagination_class()
paginated_comments = paginator.paginate_queryset(comments, request)
# OPTIMIZATION: Fetch all user ratings in a single query
# Get user IDs from paginated comments to only fetch ratings for displayed comments
user_ids = [comment.user_id for comment in paginated_comments]
# Single query to get all ratings for these users on this product
user_ratings = ProductRating.objects.filter(
product=product,
user_id__in=user_ids
).values_list('user_id', 'rating')
# Build cache dictionary for O(1) lookups in serializer
user_ratings_cache = {user_id: rating for user_id, rating in user_ratings}
# Pass cache to serializer context to avoid N queries
comments_ser = self.serializer_class(
instance=paginated_comments, many=True)
instance=paginated_comments,
many=True,
context={
'request': request,
'user_ratings_cache': user_ratings_cache,
'product': product
}
)
return paginator.get_paginated_response(comments_ser.data)
def post(self, request, slug):