如何仅在某个字段为 True 时呈现视图? - 姜戈
how can I render a view only when a certain field is True? - Django
我已经使用 DetailView 泛型 class 在基于 Django 的博客中为 post 创建了详细视图,到目前为止一切正常。然而,问题是我的 post 模型中有一个字段用于设置 post 的状态(活动、非活动、阻止),我只想呈现详细视图当状态处于活动状态时。如果有人知道实现此目的的方法,请告诉我,我要求您尽可能详细。
views.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
上的主键 and/or slug 检索元素,因此如果该元素不在过滤的查询集中,那么您将检索一个404 错误。
这里我们假设 Post
模型有一个 active
字段:
class Post(models.Model):
# …
<b>active = models.BooleanField()</b>
# …
鉴于字段和值不同,您当然应该相应地过滤查询集。
我已经使用 DetailView 泛型 class 在基于 Django 的博客中为 post 创建了详细视图,到目前为止一切正常。然而,问题是我的 post 模型中有一个字段用于设置 post 的状态(活动、非活动、阻止),我只想呈现详细视图当状态处于活动状态时。如果有人知道实现此目的的方法,请告诉我,我要求您尽可能详细。
views.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
上的主键 and/or slug 检索元素,因此如果该元素不在过滤的查询集中,那么您将检索一个404 错误。
这里我们假设 Post
模型有一个 active
字段:
class Post(models.Model):
# …
<b>active = models.BooleanField()</b>
# …
鉴于字段和值不同,您当然应该相应地过滤查询集。