To make haystack search pager place nicelly with other get parameters, we can do something like this:
@register.simple_tag
def get_search_pager_link(request):
params = []
link = "?"
for key, value in request.GET.items():
if key != "page":
params.append(u"{}={}".format(key, value))
link += "&".join(params)
if len(link) > 1:
link += "&"
return link
{% load core_tags %} {% if page.has_previous or page.has_next %}
<ul class="pagination">
{% if page.has_previous %}
<li class="previous">
<a
href="{% get_search_pager_link request %}page={{ page.previous_page_number }}"
>previous</a
>
</li>
{% endif %} {% for pg in page.paginator.page_range %} {% if page.number == pg
%}
<li class="active">
<a href="{% get_search_pager_link request %}page={{ pg }}">{{ pg }}</a>
</li>
{% else %}
<li>
<a href="{% get_search_pager_link request %}page={{ pg }}">{{ pg }}</a>
</li>
{% endif %} {% endfor %} {% if page.has_next %}
<li class="next">
<a
href="{% get_search_pager_link request %}page={{ page.next_page_number }}"
>next</a
>
</li>
{% endif %}
</ul>
{% endif %}
That way we'll achieve some nice functionality: search pager will play well with other GET parameters.
Hey, if you've found this useful, please share the post to help other folks find it: