2016-06-08 8 views

ответ

3

Индекс [-1] выбирает последний элемент в списке или кортеже и, учитывая, что множество запросов было отменено, это будет пункт первый, не последний. Вы можете попробовать:

order = Order.objects.reverse("order_number")[0] 

, но вы не можете передать ключ сортировки в reverse() так что этот код потерпит неудачу. Если у вас есть по умолчанию порядка сортировки создать для таблицы, вы можете просто сделать следующее:

order = Order.objects.last() 

Это может быть лучше использовать явные order_by():

order = Order.objects.order_by("order_number").last() 
+0

я бы поставил в смелом: * те будет работайте только при сортировке запроса на pk * :) в противном случае следует использовать Max ('pk') – Jerzyk

+0

@Jerzyk: если набор запросов не имеет определенного порядка, 'last()' автоматически сортирует его по первичному ключу. Это будет то же самое, что и 'Max ('pk')'. Но в Django 'order_number' очень похож на _not_ первичный ключ, поэтому должен быть сделан явный вид в поле' order_number' (если не будет уверенности в том, что упорядочение определено в модели). – mhawke

+0

Это то, что я имел в виду, и я попросил добавить его в основную часть ответа (особенно эту часть Max()), чтобы получить полный ответ (извините за ошибку z 'pk' instaead 'order_numner') – Jerzyk

Смежные вопросы