Как реализовать предыдущие и следующие ссылки в подробном представлении объекта результата поиска? - PullRequest
2 голосов
/ 15 октября 2011

Я почти закончил свой первый готовый к производству django-проект.У меня осталась одна большая проблема: я получил просмотр статьи, который отображает список найденных статей.Нумерация страниц работает хорошо для списка результатов.Когда я нажимаю на заголовок статьи, открывается страница сведений об объекте.Что я хочу: ссылки на предыдущий и следующий результат на странице подробностей объекта.

Я пробовал несколько подходов к подобным проблемам, но не нашел работающего решения.Если я пытаюсь использовать paginator только с одной статьей (для page-detail-page), мне нужно знать этот paginator-index в результирующем списке.Но как?

Даже метод .get_next (предыдущий) _by_foo-Method на самом деле не применим в этом сценарии AFAICT.Или я что-то упускаю здесь очевидное?Спасибо за любую помощь заранее!

Ответы [ 3 ]

1 голос
/ 23 апреля 2016

вы можете использовать это

<a href="?page={{ page_obj.next_page_number }}">next &raquo;</a>
<a href="?page={{ page_obj.previous_page_number }}">&laquo; previous</a>
1 голос
/ 15 октября 2011

Paginator от django работает со списками.Способ поиска по индексам в списках выглядит так:

['aaa', 'bbb', 'ccc'].index('bbb') # result: 1

или примерно так:

model = object()
[object(), object(), model].index(model) # result: 2

Надеюсь, что это даст вам подсказку о том, как вы найдете индекс paginator-index в вашем списке.

0 голосов
/ 15 октября 2011

Если вы хотите получить ссылку на странице сведений об объекте на следующий элемент из результатов поиска, вы должны получить следующий элемент из результата поиска.Чтобы получить следующий элемент, вам нужно выполнить тот же поисковый запрос, который был выполнен на странице поиска, и применить несколько дополнительных фильтров, чтобы получить только следующий элемент из этого списка.Но здесь у вас есть проблема: у вас есть только идентификатор объекта на странице сведений об объекте, у вас нет search-term.Без поискового запроса вы не сможете создать поисковый запрос.Это означает, что вам нужно как-то получить поисковый запрос.Как вы получаете этот поисковый термин?Вам нужно как-то передать его со страницы результатов поиска.Вы можете сохранить критерий поиска в сеансе / файле cookie или, что еще лучше, передать его с помощью параметра GET на страницу сведений об объекте.Теперь, когда вы ищите термин на странице отображения объекта, вы можете выполнить поисковый запрос, и из этого запроса вы можете выбрать следующий и предыдущий объекты.

Думаю, теперь вы сможете реализовать это,Если нет, то вы могли бы показать часть своего кода представления сведений об объекте, возможно, кто-то напишет какой-то код для вас.

...