I overwrite get_queryset as below:
def get_queryset(self, request):
qs = super().get_queryset(request)
qs.order_by('-id').all()[:3]
print(qs)
print()
qs2 = CreditsTransaction.objects.all()[:3]
print(qs2)
return qs
This is my output:
[2023-04-19 08:53:52 +0000] [1178] [INFO] Booting worker with pid: 1178
<QuerySet [<CreditsTransaction: CreditsTransaction object (623267)>, <CreditsTransaction: CreditsTransaction object (623266)>, <CreditsTransaction: CreditsTransaction object (623265)>, <CreditsTransaction: CreditsTransaction object (623264)>, <CreditsTransaction: CreditsTransaction object (623263)>, '...(remaining elements truncated)...']>
<QuerySet [<CreditsTransaction: CreditsTransaction object (623267)>, <CreditsTransaction: CreditsTransaction object (623266)>, <CreditsTransaction: CreditsTransaction object (623265)>]>
So in qs.order_by('-id').all()[:3]
the number of results is not limited to 3. Whereas in CreditsTransaction.objects.all()[:3]
it is. I want to know why.
You have a logical error in the code. The line qs.order_by('-id').all()[:3]
does not get saved back in qs
variable. So, you print the original qs
.
You need to do qs = qs.order_by('-id').all()[:3]
in order to get what you want.
def get_queryset(self, request):
qs = super().get_queryset(request)
qs = qs.order_by('-id').all()[:3]
print(qs)
print()
qs2 = CreditsTransaction.objects.all()[:3]
print(qs2)
return qs