Я хочу создать сайт Django, где я могу загружать сериалы с сезонами и эпизодами. В конце это должно выглядеть примерно так:
Сезоны:
[1] [2] [3]
Эпизодов:
[1] [2] [3] [4] [5] [6]
Эпизоды относятся к сезону, указанному в URL.
Мой код выглядит так:
models.py:
class Serie(models.Model):
title = models.CharField(max_length=120)
thumbnail = models.ImageField(upload_to=serie_dir_path)
...
class Season(models.Model):
order = models.IntegerField()
serie = models.ForeignKey(Serie, on_delete=models.CASCADE)
...
class Episode(models.Model):
title = models.CharField(max_length=120)
order = models.IntegerField()
episode = models.FileField(upload_to=episode_dir_path)
season = models.ForeignKey(Season, on_delete=models.CASCADE)
...
views.py:
class SeriesDetailView(DetailView):
model = Serie
def get_context_data(self, **kwargs):
context = super(SeriesDetailView, self).get_context_data(**kwargs)
context.update({
'seasons': Season.objects.all(),
'episodes': Episode.objects.all()
})
return context
urls.py:
urlpatterns = [
path('library', LibListView.as_view(), name='library'),
path('series/<int:pk>/season/<int:order>', SeriesDetailView.as_view(), name='serie-detail'),
]
lib.html:
<a href="{% url 'serie-detail' serie.id 1 %}">
(1, потому что я хочу первый сезон)
serie_detail.html:
<section class="section mt-5">
<div class="container">
<h1>{{ serie.title }}</h1>
<img class="card-img-top mb-2" src="{{ serie.thumbnail.url }}" style="height: 319px; width: 220px;">
<h6>Uploaded by: <h6 class="category text-warning"> {{serie.createdUser.username}}</h6></h6>
<div class="row">
<h4 class="mb-0">Seasons:</h4>
</div>
<div class="row">
{% for season in serie.season_set.all %}
<a href="" class="btn btn-default float-left">{{ season.order }}</a>
{% endfor %}
</div>
<div class="row">
<h4 class="mb-0">Episodes:</h3>
</div>
<div class="row">
{% for season in serie.season_set.all %}
{% for episode in season.episode_set.all %}
<a href="{% url 'episode-detail' episode.id %}" class="btn btn-default float-left btn-sm">{{ episode.order }}</a>
{% endfor %}
{% endfor %}
</div>
</div>
</section>
С кодом выше результат выглядит так:
Сезоны:
[1] [2]
Эпизодов:
[1] [1]
Он берет первый эпизод 2-го сезона, а также показывает, что.
Я благодарен за любую помощь.