python - 如何仅当某个字段为 True 时才渲染 View ? - Django

标签 python django django-models django-views django-class-based-views

我已经使用 DetailView 泛型类为基于 Django 的博客中的帖子创建了详细 View ,到目前为止一切正常。然而,问题是我的帖子模型中有一个字段用于设置帖子的状态(事件、非事件、阻止),并且我只想在状态处于事件状态时呈现详细 View 。如果有人知道实现此目的的方法,请告诉我,我要求您尽可能详细。

View .py

from .models import Post
from django.views.generic import DetailView

class PostDetailView(DetailView):
    model = Post
    context_object_name = 'post'
    template_name = 'blog/post-detail.html'

    def get_context_data(self, **kwargs):
        context = super(PostDetailView, self).get_context_data(**kwargs)
        context['title'] = Post.objects.filter(slug=self.object.slug).first()
        return context

最佳答案

在您的DetailView中,您可以过滤查询集,例如您可以使用以下内容进行过滤:

from django.views.generic import DetailView

class PostDetailView(DetailView):
    queryset = Post.objects.filter(<b>active=True</b>)

    # …

DetailView 将根据 queryset 上的主键和/或 slug 检索元素,因此,如果该元素不在过滤后的查询集中,那么您将检索 404 错误。

这里我们假设 Post 模型有一个 active 字段:

class Post(models.Model):
    # …
    <b>active = models.BooleanField()</b>
    # …

鉴于字段和值不同,您当然应该相应地过滤查询集。

关于python - 如何仅当某个字段为 True 时才渲染 View ? - Django ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60866515/

相关文章:

python - 使用 Django,在查询集中的每个对象上添加特定字段的最佳实践方法是什么?

python - 创建一个矩形类

python - 子类化 ctypes 类型

django - 根据对象过滤外键

python - Django Python 时间序列 - 可重用的应用程序和数据库模式

django - 使用 Django 将基本 URL 转发到特定页面

django - 如何对 Django 'F' 类型进行算术运算?

python - 删除 `settings.py` 中 celery scheduler 的周期性任务不会删除实际任务

python - Google App Engine 将图像添加到带有静态文件夹的页面

python - 在 Django 中导入 python 模块 : __init__. py 类未加载