From 3d18d1cae6e92d6d9779f11912f7c27a43992e3d Mon Sep 17 00:00:00 2001 From: ajurna Date: Wed, 27 May 2020 12:09:15 +0100 Subject: [PATCH] optimised query on recent_comics_json --- comic/views.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/comic/views.py b/comic/views.py index 0e542a4..dd4a286 100644 --- a/comic/views.py +++ b/comic/views.py @@ -8,7 +8,7 @@ from os import path from django.contrib.auth import authenticate, login from django.contrib.auth.decorators import login_required, user_passes_test from django.contrib.auth.models import User -from django.db.models import Max, Count +from django.db.models import Max, Count, F from django.db.transaction import atomic from django.http import HttpResponse, FileResponse from django.shortcuts import get_object_or_404, redirect, render @@ -126,15 +126,14 @@ def recent_comics_json(request): else: order_string += "date_added" comics = comics.order_by(order_string) + comics = comics.filter(comicstatus__user=request.user).annotate( + unread=F('comicstatus__unread'), + finished=F('comicstatus__finished'), + last_read_page=F('comicstatus__last_read_page') + ) response_data["recordsFiltered"] = comics.count() response_data["data"] = list() for book in comics[start:end]: - status, created = ComicStatus.objects.get_or_create(comic=book, user=request.user) - if created: - status.save() - book.unread = status.unread - book.finished = status.finished - book.last_read_page = status.last_read_page response_data["data"].append( { "selector": urlsafe_base64_encode(book.selector.bytes),