Правильная пагинация в Django
Имеется сущность Задачи. В CBV TasksCls выполнена пагинация.
'''views.py'''
class TasksCls(View):
def get(self, request):
tasks = Task.objects.select_related('id_person').all()
paginator = Paginator(tasks, 10)
page_number = request.GET.get('page', 1)
page = paginator.get_page(page_number)
count = tasks.count()
type = 'Все задачи'
return render(request, 'rootApp/tasks/tasks.html', context={'tasks': page, 'count': count, 'type': type,})
Пагинация устроена таким образом, что сначала мы выбираем все задачи из таблицы и затем разделяем их на страницы. Это круто, когда задач мало, но если их гипотетически будет 1000000? Будет большая нагрузка на БД. Подскажите пожалуйста как грамотно сделать пагинацию?
Ответы (1 шт):
Автор решения: n.one.k
→ Ссылка
Через django-debug-toolbar проверил, как идут запросы, и убедился в том, что выбираются только то количество записей, которое указано в пагинаторе. @Jack_oS был прав, благодарю!