我正在玩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}
视图
def post_detail(request, pk):
post = get_object_or_404(Post, pk=pk)
return render(request, 'blog/post_detail.html', {'post': post})
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 %}