mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-12-24 00:50:35 +00:00
One query to get book for book view
This commit is contained in:
parent
35131262ff
commit
cb089ed817
1 changed files with 10 additions and 12 deletions
|
@ -38,18 +38,16 @@ class Book(View):
|
|||
|
||||
user_statuses = user_statuses if request.user.is_authenticated else False
|
||||
|
||||
try:
|
||||
book = models.Edition.viewer_aware_objects(request.user).filter(id=book_id)
|
||||
except models.Edition.DoesNotExist:
|
||||
book = (
|
||||
models.Edition.viewer_aware_objects(request.user)
|
||||
.filter(
|
||||
parent_work__id=book_id,
|
||||
)
|
||||
.order_by("-edition_rank")
|
||||
)
|
||||
book = book.select_related("parent_work").prefetch_related("authors")
|
||||
book = book.first()
|
||||
# it's safe to use this OR because edition and work and subclasses of the same
|
||||
# table, so they never have clashing IDs
|
||||
book = (
|
||||
models.Edition.viewer_aware_objects(request.user)
|
||||
.filter(Q(id=book_id) | Q(parent_work__id=book_id))
|
||||
.order_by("-edition_rank")
|
||||
.select_related("parent_work")
|
||||
.prefetch_related("authors")
|
||||
.first()
|
||||
)
|
||||
|
||||
if not book or not book.parent_work:
|
||||
raise Http404
|
||||
|
|
Loading…
Reference in a new issue