私はDjangoでいくつかの並べ替えオプションを使用してページネーション構造を実装しようとしていますが、どうすれば適切に行うことができないのでしょうか。ソートによるDjangoページ分割のオーバーヘッド
views.py
def search(request):
eList = Employer.objects.filter(eminence__lt=4).order_by('-eminence')
paginator = Paginator(eList, 3) # Show 3 contacts per page
page = request.GET.get('page')
try:
employerList = paginator.page(page)
except PageNotAnInteger:
employerList = paginator.page(1)
except EmptyPage:
employerList = paginator.page(paginator.num_pages)
return render_response(request, 'employer/search.html', {'employerList':employerList})
search.htmlの
<div class="pagination">
<span class="step-links">
{% if employerList.has_previous %}
<a href="?page={{ employerList.previous_page_number }}">previous</a>
{% endif %}
<span class="current"> Page {{ employerList.number }} of {{ employerList.paginator.num_pages }}.</span>
{% if employerList.has_next %}
<a href="?page={{ employerList.next_page_number }}">next</a>
{% endif %}
</span>
</div>
この例では、しかし、あなたは私がすべてのEmployer
オブジェクトを取得する必要があり、すべてのナビゲーションのために、見ることができるように素晴らしい作品。その後、Paginator
は、ページ番号に応じてクエリ内のオブジェクトを処理します。しかし、私はページネーションがクエリ中に実行され、ページ番号に依存したいXオブジェクトだけを取得する必要があると思います。私はそのような方法でコードを変更することができますが、そのようなオーバーヘッドがあるにもかかわらず、人々がなぜPaginator
を使用するのか理解できません。私は詳細を見落とすかもしれません...
私の2番目の質問はどのように私のリストを並べ替えることができますか? url
を変更し、ソート方法とページ番号を渡す必要があります。それらに応じて、ソート方法によってクイズが得られ、それをPaginator
にしますか?
これは私にとっては妥当で素晴らしいと思われますが、私はちょうどdjangoで行うより良いアプローチがあるのだろうかと思います。
おかげ
私はそれを知っていましたdjangoの開発者はよりスマートなtahnです:)私は "それ以外の場合"のコントロールを適用していた方法でセキュリティのおかげで感謝しますが、より洗練されたソリューションのようです – brsbilgic
私は実際に私のサイトでこれを90%私は助けてうれしいです。 '= - ]' –