Django queryset filter based on slug
Я хочу поставить фильтр на страницу, которая показывает видео, выбирая альбом, на странице альбома отображаются не все видео, но мой текущий фильтр показывает все опубликованные видео. Я не смог найти способ поставить фильтр на основе slug, который если slug альбома совпадает с текущим url, то показывает видео, выбранное из этого альбома. Я совсем запутался, помогите мне.
models.py
from django.db import models
from django.urls import reverse
STATUS = (
(1, "Publish"),
(0, "Draft")
)
class WatchCategory(models.Model):
title = models.CharField(max_length=20)
slug = models.SlugField(max_length=2000, unique=True)
def __str__(self):
return self.title
class Genre(models.Model):
title = models.CharField(max_length=20)
slug = models.SlugField(max_length=2000, unique=True)
def __str__(self):
return self.title
class Album(models.Model):
title = models.CharField(max_length=2000)
slug = models.SlugField(max_length=2000, unique=True)
image = models.CharField(max_length=2000, blank=True)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('Watch:album', kwargs={
'slug': self.slug
})
class Video(models.Model):
title = models.CharField(max_length=2000)
slug = models.SlugField(max_length=2000, unique=True)
thumbnail = models.CharField(max_length=2000, unique=True)
updated_on = models.DateTimeField(auto_now=True)
file = models.CharField(max_length=2000)
time = models.CharField(max_length=2000, blank=True)
about = models.TextField(blank=True)
category = models.ManyToManyField(WatchCategory)
album = models.ManyToManyField(Album)
genre = models.ManyToManyField(Genre)
created_on = models.DateTimeField(auto_now_add=True)
status = models.IntegerField(choices=STATUS, default=1)
class Meta:
ordering = ['-created_on']
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('Watch:video', kwargs={
'slug': self.slug
})
views.py
class Album(ListView):
queryset = Video.objects.filter(status=1).order_by('-created_on')
template_name = 'Watch/album.html'
paginate_by = 6
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['title'] = 'Explore & Watch your favourite'
return context
album.html
{% extends "Watch/layout.html" %}
{% load static %}
{% block content %}
<div class="video-block section-padding">
<div class="row">
{% for video in video_list %}
<div class="col-xl-3 col-sm-6 mb-3">
<div class="video-card">
<div class="video-card-image">
<a class="play-icon" href="{% url 'Watch:video' video.slug %}"><i class="fas fa-duotone fa-circle-play"></i></a>
<a href="{% url 'Watch:video' video.slug %}"><img class="img-fluid" src="{{ video.thumbnail }}" alt=""></a>
<div class="time">{{ video.time }}</div>
</div>
<div class="video-card-body">
<div class="video-title">
<a href="{% url 'Watch:video' video.slug %}">{{ video.title }}</a>
</div>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
{% endblock %}
у меня та же проблема Я пробовал это в get_context_data()
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
movies = Video.objects.filter(slug=SlugField) #SlugField is the source of the problem I got I think
context["movies"] = movies
return context
Но это не работает, что еще вы пробовали?