The POST thing was the result of late night meltdowns and desperation. I tend to just try stupid things when i'm working through an issue like this, just seeing what the application is capable of doing. I've switched it all back to GET.
I found the answer around 1 this morning. You are exactly right, I needed to capture the query string and place it in the "next" and "previous" page links. Here's how I went about doing that, just in case someone else runs into this issue: query_string = request.GET.copy() and then in the dict: 'query_string': query_string.urlencode() On May 11, 4:46 am, Nuno Maltez <nuno.li...@gmail.com> wrote: > 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 > > athttp://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 > athttp://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.