我刚刚构建了一个模型管理器来处理我的查询集的调整过滤器,以排除将来发布的帖子(发布> timezone.now.date)和Post.draft = True的帖子。
x$species <- gsub('\\s+', '', x$species)
y$species <- gsub('\\s+', '', y$species)
我能够在我的视图和模板中处理布尔型草稿字段。即,如果超级用户正在查看发布应用索引页面(发布列表),则可以看到一个标头标签,表明它是草稿:
帖子列表页面模板:
class PostManager(models.Manager):
def active(self, *args, **kwargs):
return super(PostManager, self).filter(draft=False).filter(publish__lte=timezone.now().date())
这是基于函数的列表视图的view.py ---您将看到“今天”(从上方)作为上下文变量:
<div class="card-body">
{% if post.draft %}<h3>Staff Only: Draft</h3>{% endif %}
{% if instance.publish > today %}<h3>Staff Only: Future Post</h3>{% endif %}
我很好奇为什么我能够处理草稿设置为True的(从公共视图中排除)帖子,但不能处理使用我拥有的代码发布> timezone.now()。date()的帖子
这是我在models.py中发布的模型字段,用于更清晰:
def post_view(request):
template_name = 'posts/index.html'
today = timezone.now().date()
queryset_list = Post.objects.active()
if request.user.is_staff or request.user.is_superuser:
queryset_list = Post.objects.all()
paginator = Paginator(queryset_list, 5)
page = request.GET.get('page')
queryset = paginator.get_page(page)
context = {
'post_list': queryset,
'today': today,
}
return render(request, template_name, context)
谢谢大家!