在给定项目的情况下,在Django查询集中查找上一个和下一个项目

时间:2015-08-07 09:56:12

标签: django django-models django-queryset

所以我正在Django建立一个博客,但我正在大脑冻结。

我正在使用BlogPost详细信息视图,我需要查看上一篇和下一篇文章,以便我可以在帖子正文后提供它们作为导航选项。为了这个问题,我有两件事:

  • BlogPost实例
  • 所有BlogPosts的查询集,始终按when(日期时间)字段排序。

我在查询中没有博客帖子的索引,也不适合扫描我的初始博客帖子的整个查询集。是否有一种智能且廉价的方法可以从给定物体的任何一侧获取物体(如果你不知道它从哪里开始)?

1 个答案:

答案 0 :(得分:3)

Model.get_next_by_FOO  # get_previous_by_FOO

Django documentation稍有曝光,但很有用:

  

对于没有null = True的每个DateField和DateTimeField,   该对象将具有get_next_by_FOO()和get_previous_by_FOO()   方法,其中FOO是字段的名称。这将返回下一个和   关于日期字段的前一个对象,引发了一个DoesNotExist   适当时例外。