Program Tip

장고 쿼리는 마지막 n 레코드를 가져옵니다.

programtip 2020. 12. 7. 20:36
반응형

장고 쿼리는 마지막 n 레코드를 가져옵니다.


메시지 스트림을 구현하고, ID 오름차순으로 레코드 정렬, 각 페치 요청, 가장 최근의 10 개 레코드 만 페치하도록 허용하고 싶다고 가정 해 보겠습니다.

나는 시도했다 :

Messages.objects.filter(since=since)[:-10]

그리고 Negative Indexing이 지원되지 않는다는 오류가 발생했습니다.

내 현재 해결 방법은 ID를 내림차순으로 정렬하고 다음을 실행하는 것입니다.

Messages.objects.filter(since=since)[:10]

그러나 이렇게하려면 프런트 엔드가 순서를 다시 반대로해야합니다.

제 질문은 우아한 방법이 있습니까?


queryset을 reversed로 전달할 수 있습니다 .

last_ten = Messages.objects.filter(since=since).order_by('-id')[:10]
last_ten_in_ascending_order = reversed(last_ten)

또는 [::-1]대신 사용하십시오 reversed.

last_ten = Messages.objects.filter(since=since).order_by('-id')[:10][::-1]

마지막 X 레코드를 id 별로 내림차순으로 정렬하려면 필터 이후 필요하지 않다고 생각합니다.

last_ten = Messages.objects.all().order_by('-id')[:10]

-id사용하면 내림차순으로 정렬됩니다. 이것이 도움이 되었기를 바랍니다!

참고 URL : https://stackoverflow.com/questions/20555673/django-query-get-last-n-records

반응형