gpt4 book ai didi

django - 如何从过滤后的有序查询集中获取上一个和下一个对象?

转载 作者:行者123 更新时间:2023-12-04 17:13:52 24 4
gpt4 key购买 nike

我有一个基于模型对象的页面,我想要链接到上一页和下一页。我不喜欢我当前的解决方案,因为它需要评估整个查询集(以获取 ids 列表),然后还有两个 get查询。当然有某种方法可以一次性完成吗?

def get_prev_and_next_page(current_page):
ids = list(Page.objects.values_list("id", flat=True))
current_idx = ids.index(current_page.id)
prev_page = Page.objects.get(id=ids[current_idx-1])
try:
next_page = Page.objects.get(id=ids[current_idx+1])
except IndexError:
next_page = Page.objects.get(id=ids[0])
return (prev_page, next_page)

排序顺序已在模型中定义,因此不必在此处处理,但请注意,您不能假设 id 是连续的。

最佳答案

听起来像分页器设置为 1 的阈值会做得很好。

# Full query set...
pages = Page.objects.filter(column=somevalue)
p = Paginator(pages, 1)

# Where next page would be something like...
if p.has_next():
p.page(p.number+1)

Documentation herehere .

关于django - 如何从过滤后的有序查询集中获取上一个和下一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1692395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com