使用下一个和上一个对象ID注释查询集中的对象 [英] Annotate objects in a queryset with next and previous object ids

查看:68
本文介绍了使用下一个和上一个对象ID注释查询集中的对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何注释Django ORM查询集中的对象,以便每个项目都包含对象的ID(前一个(上一个)和后一个对象(下一个))?我正在使用PostgreSQL和Django 1.11.

How do I annotate the objects in a Django ORM queryset so that every items contain IDs of the the object before (previous) and the one after (next)? I am using PostgreSQL and Django 1.11.

推荐答案

您可以使用窗口函数lag()lead() :

You could use the window functions lag() and lead():

SELECT *
     , lag(id)  OVER (ORDER BY id) AS prev_id  -- same order as query
     , lead(id) OVER (ORDER BY id) AS next_id  -- same order as query
FROM   tbl
ORDER  BY id;

这篇关于使用下一个和上一个对象ID注释查询集中的对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆