I have a website that basically displays a huge table of people that I want to be able to filter, sort and scroll pages. I want to do this in several views that have different existing judgments by which people appear in the table. My problem is that if, for example, I filter by state, sort by name, and then try to go to the next page, it is reset. For example, if I filter once, I get my / url / 2013 /? Sort = n & state = MN & page = 1; then if i go to page 2 i just get my / url / 2013 /? page = 2. He does not remember what I already asked.
def all(request, year=default_year): #sorting (sort_options was defined prior to this view) if 'sort' in request.GET: sort = request.GET.get('sort') order = sort_options[sort] else: order = '-score' players = Player.objects.filter(year=year).order_by(order) url_query = '' #filtering if 'position' in request.GET: filterData = _filter(request,players) players = filterData['players'] url_query += filterData['url_query'] # pagination paginator = Paginator(players,25) page = request.GET.get('page') try: players = paginator.page(page) except PageNotAnInteger: players = paginator.page(1) except EmptyPage: players = paginator.page(paginator.num_pages) data = {'players':players,'url_query':url_query} return render_to_response('all.html', data, context_instance = RequestContext(request))
In my template, I refer to url_query as follows:
<th class="name"><a href="?sort=n&{{url_query}}&page={{players.number}}">Name</a></th>
so:
<a href="?{{url_query}}&page={{ players.next_page_number }}">Next</a>
This is clearly wrong for me, but I don’t know how to do it right.
source share