특정 쿼리 세트에서 마지막 레코드를 검색하려면 어떻게해야합니까?
답변
편집 : 이제 사용해야합니다 Entry.objects.latest('pub_date')
다음을 사용하여 다음과 같이 간단히 할 수 있습니다 reverse()
.
queryset.reverse()[0]
또한 Django 문서에서이 경고를주의하십시오.
…
reverse()
일반적으로 정의 된 순서가있는 QuerySet에서만 호출되어야합니다 (예 : 기본 순서를 정의하는 모델에 대해 쿼리 할 때 또는를 사용할 때order_by()
). 지정된에 대해 이러한 순서가 정의되지 않은 경우QuerySet
호출reverse()
해도 실제 효과가 없습니다 (순서는 호출 전에 정의되지 않았고reverse()
나중에 정의되지 않은 상태로 유지됩니다).
답변
장고 문서 :
latest(field_name=None)
날짜 필드로 제공된 field_name을 사용하여 날짜별로 테이블의 최신 개체를 반환합니다.이 예는
pub_date
필드 에 따라 테이블의 최신 항목을 반환합니다
.
Entry.objects.latest('pub_date')
답변
가장 간단한 방법은 다음과 같습니다.
books.objects.all().last()
또한 이것을 사용하여 다음과 같이 첫 번째 항목을 가져옵니다.
books.objects.all().first()
답변
장고> = 1.6
필터와 일치하는 첫 번째 또는 마지막 개체를 반환하는 편리한 메서드 인 QuerySet 메서드 first () 및 last ()를 추가했습니다. 일치하는 개체가 없으면 None을 반환합니다.
답변
First 개체를 얻으려면 :
ModelName.objects.first()
마지막 개체를 가져 오려면 :
ModelName.objects.last()
필터를 사용할 수 있습니다
ModelName.objects.filter(name='simple').first()
이것은 나를 위해 작동합니다.
답변
쿼리 세트가 이미 소진 된 경우 다른 db 힌트를 피하기 위해 이렇게 할 수 있습니다.
last = queryset[len(queryset) - 1] if queryset else None
사용하지 마십시오 try...except...
. 이 경우
장고는 던지지 않습니다 IndexError
.
그것은 발생 AssertionError
또는 ProgrammingError
(당신이 -O 옵션으로 파이썬을 실행할 때)
답변
django 1.6 이상을 사용하는 경우 새 API가 도입되어 훨씬 쉬워졌습니다.
Model.object.earliest()
역방향으로 latest ()를 제공합니다.
추신-나는 그것의 오래된 질문을 알고, 누군가 가이 질문에 착수하는 것처럼 게시하고, 그들은이 새로운 기능을 알게되고 오래된 방법을 사용하지 않습니다.