首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于段塞的Django queryset滤波器

基于段塞的Django queryset滤波器
EN

Stack Overflow用户
提问于 2022-10-21 16:05:05
回答 1查看 47关注 0票数 3

我想在一个页面上设置一个过滤器,它显示视频,选择一个相册,显示在相册页面上,而不是所有的视频,但是我的当前过滤器显示的是所有已发布的视频。我找不到一种方法来放置一个基于段塞的过滤器,如果一个专辑的片段与当前的url匹配,然后显示选择该专辑的视频。例如:- Gaurav创建的视频只能在Gaurav的专辑中看到,而不是其他任何人。我都糊涂了帮帮我。

models.py

代码语言:javascript
复制
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

代码语言:javascript
复制
        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

代码语言:javascript
复制
        {% 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 %}
EN

回答 1

Stack Overflow用户

发布于 2022-10-22 10:16:21

同样的问题,我已经在get_context_data()中尝试过了

代码语言:javascript
复制
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

但这不管用,你还试过什么?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74156348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档