我已经使用 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/