基本的に、フィルター処理、並べ替え、およびページを表示できるようにしたい人々の巨大なテーブルを表示するサイトがあります。テーブルに表示される人物について、既存の制約が異なる複数のビューでこれを行いたいと考えています。私の問題は、たとえば状態でフィルタリングし、名前で並べ替えてから、次のページに移動しようとすると、リセットされることです。たとえば、一度フィルタリングすると、my/url/2013/?sort=n&state=MN&page=1; を取得します。次に、ページ 2 に移動すると、my/url/2013/?page=2 が表示されます。私がすでに尋ねたことを覚えていません。
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))
私のテンプレートでは、次のように url_query を参照しています。
<th class="name"><a href="?sort=n&{{url_query}}&page={{players.number}}">Name</a></th>
そしてそのように:
<a href="?{{url_query}}&page={{ players.next_page_number }}">Next</a>
これは私にとって明らかに間違っていますが、正しく行う方法がわかりません。