Django 모델을 필터링하여 마지막 인덱스를 얻을 수 있습니까?Django 모델을 필터링하여 마지막 인덱스를 얻습니다.
여기 내보기
order = Order.objects.reverse("order_number")[-1]
입니다 그러나 최초의 인덱스를 가져옵니다.
Django 모델을 필터링하여 마지막 인덱스를 얻을 수 있습니까?Django 모델을 필터링하여 마지막 인덱스를 얻습니다.
여기 내보기
order = Order.objects.reverse("order_number")[-1]
입니다 그러나 최초의 인덱스를 가져옵니다.
가 lastest(field_name=None)보십시오 :
Entry.objects.latest('id')
첨자 [-1]
쿼리 세트가 반전 된 주어진 목록 또는 튜플과,에 마지막 항목을 선택,이는 첫 항목이없는 것 마지막. 당신이 시도 할 수 :
order = Order.objects.reverse("order_number")[0]
하지만 당신은 그래서이 코드가 실패 reverse()
에 정렬 키를 전달할 수 없습니다. 당신이 테이블에 대한 설정의 기본 정렬 순서가 있다면 당신은이 작업을 수행 할 수 있습니다
order = Order.objects.last()
이 order_by()
명시 적으로 사용하는 것이 더 좋을 수 있습니다
order = Order.objects.order_by("order_number").last()
내가 굵은 글씨로 넣어 것입니다 : * 그 것 pk *로 쿼리 세트를 정렬 할 때만 작동합니다. 그렇지 않으면 Max ('pk')를 사용해야합니다. – Jerzyk
@Jerzyk : 쿼리 세트에 정의 된 순서가 없으면 'last()'가 자동으로 기본 키로 정렬합니다. 이것은 Max ('pk')와 동일합니다. 하지만 Django에서'order_number'는 기본 키와 매우 흡사합니다. 그러므로 order_number 필드에 대한 명시적인 정렬이 이루어져야합니다 (순서가 모델에 정의되어 있는지 확실하지 않은 경우). – mhawke
이것은 내가 의도 한 바이며, 답변의 주체 (특히 Max() 부분)에 추가하도록 요청했습니다. - 완전한 대답을 가졌습니다. (실수로 z'pk 'instaead'order_numner '에 대해) – Jerzyk