Я пытаюсь реализовать структуру разбиения на страницы в 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
, хотя есть такие издержки.Я могу упустить из виду детали ...
Мой второй вопрос: как я могу применить сортировку моего списка?Должен ли я изменить свой url
и передать метод сортировки и номер страницы, и в зависимости от них получить запрос методом сортировки и присвоить ему Paginator
?
Это кажется мне разумным и хорошим, но я простоИнтересно, есть ли лучший способ сделать в Джанго.
Спасибо