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.

Reply via email to