给定一个项目,在 Django 查询集中查找上一个和下一个项目
Find previous and next items in a Django queryset, given an item
所以我正在用 Django 构建博客,但我的大脑冻结了。
我正在查看 BlogPost 详细信息视图,我需要算出上一个和下一个 post,以便我可以在 post 正文之后将它们作为导航选项提供。为了这个问题,我有两件事:
- 一个 BlogPost 实例
- 所有 BlogPost 的查询集,按
when
(日期时间)字段一致排序。
我在查询中没有博客 post 的索引,为我的初始博客 post 扫描整个查询集听起来也不对。是否有一种智能且廉价的方式从给定对象的任一侧获取对象(如果您不知道它从哪里开始)?
Model.get_next_by_FOO # get_previous_by_FOO
Django documentation 稍微曝光不足,但很有用:
For every DateField and DateTimeField that does not have null=True,
the object will have get_next_by_FOO() and get_previous_by_FOO()
methods, where FOO is the name of the field. This returns the next and
previous object with respect to the date field, raising a DoesNotExist
exception when appropriate.
所以我正在用 Django 构建博客,但我的大脑冻结了。
我正在查看 BlogPost 详细信息视图,我需要算出上一个和下一个 post,以便我可以在 post 正文之后将它们作为导航选项提供。为了这个问题,我有两件事:
- 一个 BlogPost 实例
- 所有 BlogPost 的查询集,按
when
(日期时间)字段一致排序。
我在查询中没有博客 post 的索引,为我的初始博客 post 扫描整个查询集听起来也不对。是否有一种智能且廉价的方式从给定对象的任一侧获取对象(如果您不知道它从哪里开始)?
Model.get_next_by_FOO # get_previous_by_FOO
Django documentation 稍微曝光不足,但很有用:
For every DateField and DateTimeField that does not have null=True, the object will have get_next_by_FOO() and get_previous_by_FOO() methods, where FOO is the name of the field. This returns the next and previous object with respect to the date field, raising a DoesNotExist exception when appropriate.