diff --git a/movies/models.py b/movies/models.py index 80057d3f..bf592b9d 100644 --- a/movies/models.py +++ b/movies/models.py @@ -8,6 +8,8 @@ from common.models import Entity, Mark, Review, Tag from common.utils import ChoicesDictGenerator, GenerateDateUUIDMediaFilePath from django.utils import timezone from django.conf import settings +from django.db.models import Q +import re def movie_cover_path(instance, filename): @@ -181,6 +183,15 @@ class Movie(Entity): translated_genre.append(MovieGenreTranslator[g]) return translated_genre + def get_related_movies(self): + imdb = 'no match' if self.imdb_code is None or self.imdb_code == '' else self.imdb_code + qs = Q(imdb_code=imdb) + if self.is_series: + prefix = re.sub(r'\d+', '', re.sub(r'\s+第.+季', '', self.title)) + qs = qs | Q(title__startswith=prefix) + qs = qs & ~Q(id=self.id) + return Movie.objects.filter(qs).order_by('season') + @property def verbose_category_name(self): if self.is_series: diff --git a/movies/templates/movies/detail.html b/movies/templates/movies/detail.html index 752a9a9c..18551b57 100644 --- a/movies/templates/movies/detail.html +++ b/movies/templates/movies/detail.html @@ -395,6 +395,24 @@ {% endif %} + {% if movie.get_related_movies.count > 0 %} +
+
+
{% trans '相关条目' %}
+
+ {% for m in movie.get_related_movies %} +

+ {{ m.title }} + {% if movie.source_site != m.source_site %} + {{ m.get_source_site_display }} + {% endif %} +

+ {% endfor %} +
+
+
+ {% endif %} +