Можно ли фильтровать модель 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' очень похож на _not_ первичный ключ, поэтому должен быть сделан явный вид в поле' order_number' (если не будет уверенности в том, что упорядочение определено в модели). – mhawke
Это то, что я имел в виду, и я попросил добавить его в основную часть ответа (особенно эту часть Max()), чтобы получить полный ответ (извините за ошибку z 'pk' instaead 'order_numner') – Jerzyk