Возможно ли отсортировать queryset без повторного обращения к базе данных?

Есть ли какой-нибудь подход, чтобы избежать удара по db, когда набор запросов должен быть возвращен в определенном порядке? возвращать в определенном порядке?

Если бы набор запросов возвращался при загрузке страницы

qs = Student.objects.all()[start:end]

Но он также предоставляет пользователям пользовательский интерфейс для просмотра запроса в порядке возрастания или убывания порядке. Итак, на сервере Django.

Запросы должны быть выполнены

qs = Student.objects.all()[start:end]
qs2 = Student.objects.filter(id__in=qs).order_by("-id")  

Для уменьшения попадания в базу данных есть ли другой лучший подход, чтобы избежать частых запросов и попадания в базу данных?

Интересно было бы хранить результат запроса в браузере и возвращать результаты но это выглядит так сложно...

Вы можете использовать встроенную функцию Python sorted(). В функцию sorted() нужно передать объект iterable и ключевую функцию.

В вашем случае, вы можете попробовать:

qs = Student.objects.all()[start:end]
sorted_qs = sorted(qs, key=lambda obj: obj.id)
Вернуться на верх