我使用基于类的视图DetailView来处理博客文章的布局。
在模板中,我需要实现一个按钮来显示按时间戳排序的上一篇/下一篇文章。出于这个原因,我需要通过自定义get_context_data(self)
方法来覆盖上下文。因此,在上下文中,我需要添加insertion_date
相对于当前帖子的上一个/下一个条目的实例。
视图.py
class EntryDetailView(DetailView):
model = Entry
def get_context_data(self, **kwargs):
context = super(EntryDetailView, self).get_context_data(**kwargs)
context['base_url'] = self.request.build_absolute_uri("/").rstrip("/")
return context
型号.py
from .managers import EntryManager
class Entry(models.Model):
""" Blog Entry
"""
insertion_date = models.DateTimeField('inserimento', auto_now_add=True)
感谢您提供的任何帮助。
只需使用Django的get_previous_by_created和get_next_by_createdqweryset
注意,创建的应该是Post模型中的字段
示例
<ul class="post-nav group">
{% if post.get_previous_by_created %}
<li class="prev">
<strong>Previous Article</strong>
<a rel="prev" href="{{post.get_previous_by_created.get_absolute_url }}">
{{ post.get_previous_by_created}}</a>
</li>
{% endif %}
{% if post.get_next_by_created%}
<li class="next">
<strong>Next Article</strong>
<a rel="next" href="{{ post.get_next_by_created.get_absolute_url}}">
{{ post.get_next_by_created.slug}}
</a>
</li>
{% endif %}
注意帖子应该是帖子详细信息视图中的上下文变量