obj = Edition.objects.latest('pub_date')
можно также упростить вещи путем помещения get_latest_by
в Meta модели, тогда Вы будете в состоянии сделать
obj = Edition.objects.latest()
, См. документы для большего количества информации. Вы, вероятно, также захотите установить ordering
опция Meta.
Ответ Harley является способом пойти для случая, где Вы хотите последнее согласно некоторым критериям упорядочивания конкретных Моделей, как Вы делаете, но общее решение состоит в том, чтобы инвертировать упорядочивание и получить первый объект:
Edition.objects.order_by('-pub_date')[0]
Примечание:
Нормальные списки Python принимают отрицательные индексы, которые показывают смещение от конца списка, а не начало как положительное число. Однако объекты QuerySet повысят
AssertionError: Negative indexing is not supported.при использовании отрицательного индекса который является, почему необходимо сделать что сказанный insin: инвертируйте упорядочивание и захватите
0th
элемент. Остерегайтесь использования
Edition.objects.order_by('-pub_date')[0]
, поскольку Вы могли бы индексировать пустой QuerySet. Я не уверен, каков корректный подход Pythonic, но самое простое должно было бы обернуть его в если/еще или попытка/выгода:
try:
last = Edition.objects.order_by('-pub_date')[0]
except IndexError:
# Didn't find anything...
, Но, поскольку @Harley сказал, когда Вы заказываете по дате, latest()
способ djangonic сделать это.