如何在Django DetailView视图中检索上一个/下一个条目



我使用基于类的视图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 %}

注意帖子应该是帖子详细信息视图中的上下文变量

最新更新