>>> user = User.objects.order_by('-last_login')[1] // Second Highest record w.r.t 'last_login'
>>> user.first_name
'Raghu'
>>> user = User.objects.order_by('-last_login')[2] // Third Highest record w.r.t 'last_login'
>>> user.first_name
파이썬의 인덱싱 연산을 사용하여 구할 수 있다.
User.objects.order_by('-last_login')[1]
인덱싱을 사용하면, mysql 기준 LIMIT OFFSET
질의문을 생성한다.
SELECT "auth_user"."id",
"auth_user"."password",
"auth_user"."last_login",
"auth_user"."is_superuser",
"auth_user"."username"
FROM "auth_user"
ORDER BY "auth_user"."last_login" DESC
LIMIT 1
OFFSET 1
보통 이 LIMIT OFFSET 을 이용해 pagination을 구현하게 된다.
(장고는 Paginator 를 제공하고 있으니 알아서 해준다)
지정된 OFFSET까지 모두 정렬한 후 LIMIT에 지정한 갯수로 자르는 방식이기 때문에 극단적으로 "1억번 째 글을 찾고 싶다"고 하면 성능에 영향을 줄 수 있다.