You need to pass the current search paramters in your query string (?party=D&q=<txt>&page=<num> ) when you create the links to all the pages, and you need to be able to retrieve them from request.GET in order to recreate the object list (reps) when rendering a specific page (any particular reason why are you using POST in the search form?).
hth, Nuno On Tue, May 11, 2010 at 1:58 AM, Nick <nickt...@gmail.com> wrote: > 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. > > -- 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.