gpt4 book ai didi

python - 基于 slug 的 Django 查询集过滤器

转载 作者:行者123 更新时间:2023-12-05 05:32:22 25 4
gpt4 key购买 nike

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

enter image description here

模型.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
})

View .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

相册.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

但是它不起作用,你还尝试了什么?

关于python - 基于 slug 的 Django 查询集过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74156348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com