【问题标题】:Find previous and next items in a Django queryset, given an item给定一个项目,在 Django 查询集中查找上一个和下一个项目
【发布时间】:2015-08-07 09:56:11
【问题描述】:

所以我正在用 Django 构建一个博客,但我的大脑已经冻结了。

我在 BlogPost 详细视图中,我需要计算上一篇和下一篇文章,以便在文章正文之后提供它们作为导航选项。为了这个问题,我有两件事:

  • 一个 BlogPost 实例
  • 所有博客帖子的查询集,按when(日期时间)字段一致排序。

我在查询中没有博客文章的索引,而且为我的初始博客文章扫描整个查询集听起来也不合适。是否有一种智能且廉价的方法可以从给定对象的任一侧获取对象(如果您不知道从哪里开始)?

【问题讨论】:

    标签: django django-models django-queryset


    【解决方案1】:
    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 适当时例外。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多