I'm trying to paginate results from a search with multiple options.
The only problem is, once I hit the next button it clears the query
and I'm left paginating all the objects in the DB.

Here is my view:

def filter_search(request):
    if request.POST:
        reps = Rep.objects.all()
    else:
        reps = []
    query = request.POST
    if 'q' in request.POST:
        q = request.POST.get('q', '')
        qset = (
        Q(Last_Name__icontains=q) | Q(First_Name__icontains=1)
               )
        reps = reps.filter(qset)
    else:
        q = []
    if len(q):
        qlist = q
    else:
        qlist = []
    if 'party' in request.POST:
        party = request.POST.getlist('party')
        reps = reps.filter(Party__in=party)
    else:
        party = []
    if len(party):
        plist = party
    else:
        plist = []
    paginator = Paginator(reps, 15)
    results = paginator.count
    try:
        page = int(request.POST.get('page', '1'))
    except:
        page = 1
    try:
        repList = paginator.page(page)
    except (EmptyPage, InvalidPage):
        repList = paginator.page(paginator.num_pages)
    finalq = request.POST
    return render_to_response("Government/search.html", {
            'reps': repList,
            'query': query,
            'plist': plist,
            'qlist': qlist,
            'results': results,
            'finalq': finalq
})

Here is my tpl:


        <form action="" method="POST"><br />
        <input type="text" name="q"><br />
        Democrat  <input type="checkbox" name="party" value="D">
        Republican <input type="checkbox" name="party" value="R">
        <input type="submit" value="Search">
        </form>

{% if query %}
<h3>Your search for {% if qlist %} <span>{{ qlist}}</span> {% endif %}
{% if plist %} {% for p in plist %} {% if forloop.first %} <span>Party
({{ p }})</span> {% else %} & <span> Party ({{p}})</span> {% endif %}
{% endfor %}{% endif %} returned <span>{{ reps.paginator.count }}</
span> result(s)</h3>
<ul>
{% for object in reps.object_list %}
<li>{{ object.Position }} {{ object.First_Name }}
{{ object.Last_Name }} <a href="http://django.newsok.com/government/
reps/{{ object.Last_Name }}_{{ object.First_Name}}">view more</a></li>
{% endfor %}
</ul>


<div id="pagination">
{% if reps.has_previous %}
<a class="activePrev"
href="&page={{ reps.previous_page_number }}">Previous</a>
{% else %}
<a class="nullPrev">Previous</a>
{% endif %}


{% if reps.has_next %}
<a class="activeNext" href="&page={{ reps.next_page_number }}">Next</
a>
{% else %}
<a class="nullNext" href="">Next</a>
{% endif %}
</div>


That href is the cause of the problem, how do I pass a page to the url
without resetting the query?

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to