Как я могу получить предыдущие и следующие объекты из отфильтрованного, упорядоченного набора запросов?

У меня есть страница, основанная на объекте модели, и я хочу иметь ссылки на предыдущую и следующую страницы. Я немне нравится мое текущее решение, потому что оно требует оценки всего набора запросов (чтобы получить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)

Порядок сортировки определен в модели, поэтому нездесь не обязательно, но учтите, что вы не можетеПредположим, что идентификаторы являются последовательными.

Ответы на вопрос(3)

Ваш ответ на вопрос