From b246bd7dd1dbaca540ba7809454db4d00dc108b1 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 23 Sep 2021 22:16:17 -0400 Subject: [PATCH] show related books --- books/models.py | 11 ++++++++ books/templates/books/detail.html | 47 ++++++++++++++++++++----------- 2 files changed, 41 insertions(+), 17 deletions(-) diff --git a/books/models.py b/books/models.py index 012b96eb..47d40db2 100644 --- a/books/models.py +++ b/books/models.py @@ -8,6 +8,7 @@ from common.models import Entity, Mark, Review, Tag from common.utils import GenerateDateUUIDMediaFilePath from django.utils import timezone from django.conf import settings +from django.db.models import Q def book_cover_path(instance, filename): @@ -68,6 +69,16 @@ class Book(Entity): def get_tags_manager(self): return self.book_tags + def get_related_books(self): + qs = Q(orig_title = self.title) + if self.isbn: + qs = qs | Q(isbn = self.isbn) + if self.orig_title: + qs = qs | Q(title = self.orig_title) + qs = qs | Q(orig_title = self.orig_title) + qs = qs & ~Q(id = self.id) + return Book.objects.filter(qs) + @property def verbose_category_name(self): return _("书籍") diff --git a/books/templates/books/detail.html b/books/templates/books/detail.html index 36c81106..a07321b1 100644 --- a/books/templates/books/detail.html +++ b/books/templates/books/detail.html @@ -201,20 +201,6 @@
- {% if book.isbn %} - - -
-
-
{% trans '借阅或购买' %}
- -
-
- {% endif %} -
{% if mark %}
@@ -258,9 +244,8 @@
-
+
{% endif %} -
@@ -297,7 +282,35 @@ {% endif %}
- + + {% if book.get_related_books.count > 0 %} +
+
+
{% trans '相关书目' %}
+
+ {% for b in book.get_related_books %} +

+ {{ b.title }} + ({{ b.pub_house }} {{ b.pub_year }}) + {{ b.get_source_site_display }} +

+ {% endfor %} +
+
+
+ {% endif %} + + {% if book.isbn %} +
+
+
{% trans '借阅或购买' %}
+ +
+
+ {% endif %}