Форум сайта python.su
Приветствую всех.
Такая проблема. Страница, на ней отображаются все экземпляры модели. Их сотни, поэтому прикручена пейджинация. Номер страницы передается во вьюху, как get-параметр page=xxx. Все работает как надо.
Но тут прикрутил еще поиск на этой странице. Фактически, простая фильтрация через __icontains. Строка поиска во вьюху тоже передается как get-параметр search=xxx.
И тут возникла проблема - не могу применить пэйджинацию к результатам поиска. Вернее, применить-то могу, а вот показывать правильные урлы на ссылках с номерами страниц - нет. До введения поиска ссылка строилась так:
href=“{{ request.path }}?page={{ x }}”
Теперь же надо в тех случаях, когда применен фильтр, добавлять в урл и его параметр, а если нет - то все, как раньше было.
Долго думал, соорудил такой костыль:
{% ifequal request.path request.get_full_path %}
href=“{{ request.path }}?page={{ x }}”
{% else %}
href=“{{ request.get_full_path }}&page={{ x }}”
{% endifequal %}
Работает, до тех пор, пока не потыкаешь несколько раз по страницам пэйджинации. Тогда в строке get-запроса собираются несколько параметров с именем page, что неправильно.
Подскажите, как можно красиво решить эту проблему.
Спасибо
Отредактировано (Янв. 21, 2011 07:54:54)
Офлайн
Передавайте отдельной переменной search и пишите например вот так:
href=“?search={{ search }}&page={{ page }}”
Офлайн
Лучше сделать апгрейт пагинатору. Я так делал. Оч удобобно, сам склеивает get параметры любые и строит умную нумерацию. Да и есть отдельный модуль джанго-пагинатор, его можно заюзать. Правда не помню как там с get.
Офлайн
fthда, примерно так и сделал. передаю в переменной search строку поиска, либо Null, в зависимости от.
Передавайте отдельной переменной search и пишите например вот так:
href=“?search={{ search }}&page={{ page }}”
href="{{ request.path }}?{% if search %}search={{ search }}&{% endif %}page={{i}}"
Офлайн