【发布时间】:2010-12-14 03:00:22
【问题描述】:
我有一个基于模型对象的页面,我希望有指向上一页和下一页的链接。我不喜欢我当前的解决方案,因为它需要评估整个查询集(以获取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 是连续的。
【问题讨论】:
标签: django django-models django-queryset