Is it possible to sort queryset without hitting the db again?
Is there any approach to avoid hitting db when the queryset needs to be returned in a specific order?
If a queryset would be returned when a page is loaded
qs = Student.objects.all()[start:end]
But it also provides UI for users to view the query in ascending or descending order. So, at Django server.
Queries should be performed
qs = Student.objects.all()[start:end]
qs2 = Student.objects.filter(id__in=qs).order_by("-id")
To reduce the db hitting, is there any other better approach to avoid frequent query and db hit?
I wonder I would store the query result in browser and return the results but it looks so complex...
You can use python's built in function sorted()
. You have to pass iterable object and key function to sorted()
function.
In your case, you can try:
qs = Student.objects.all()[start:end]
sorted_qs = sorted(qs, key=lambda obj: obj.id)