Django - 从侧栏中排除当前帖子

时间:2017-07-28 06:13:06

标签: python django

我正在玩Django,但我的模板出现问题。在我的帖子详细信息中,包括模板标签中最近的帖子侧栏,但我想排除当前帖子,实际上是最新的帖子之一。我最初的希望是在blog_tag中使用.exclude(id__post_detail = post),但我想我可能会错过一个重要的概念,我是否需要请求post_detail返回它的响应然后我可以这样做?或者也许在视图中定义查询,然后将其调用到blog_tag?

非常感谢提前。

1.blog_tags.py

from django import template

register = template.Library()

from django.db import models
from django.utils import timezone
from ..models import Post

@register.inclusion_tag('blog/sidebar.html')
def sidebar_latest(request, count=5):     
    latest_posts= Post.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')[:count]
    return {'latest_posts': latest_posts}
  1. 视图

    def post_detail(request, pk):
        post = get_object_or_404(Post, pk=pk)
        return render(request, 'blog/post_detail.html', {'post': post})
    
  2. post_detail

    {% extends 'blog/base.html' %}
    {% load blog_tags %}
    {% block content %}
    <div class="col-sm-12 col-md-9">
    <div class="post">
    <h1>{{ post.title }}</h1>
    {% if post.published_date %}
    <div class="date">
    {{ post.published_date }}
    </div>
    {% endif %}
    <p>{{ post.text|linebreaksbr }}</p>
    </div>
    </div>
    <div class="col-sm-12 col-md-3">
    {% sidebar_latest 3 %}
    </div>
    {% endblock %}
    

0 个答案:

没有答案