Возможно ли отсортировать 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)