8 ответов:
вы могли бы просто сделать что-то подобное, используя
reverse():queryset.reverse()[0]кроме того, остерегайтесь этого предупреждения из документации Django:
... обратите внимание, что
reverse()должны обычно вызывается только на QuerySet который имеет определенный порядок (например, при запросе к модели, которая определяет порядок по умолчанию, или когда используяorder_by()). Если нет такого заказа определяется для данногоQuerySet, звонюreverse()на нем нет реальных эффект (порядок не определен до звонкаreverse(), и оставайтесь неопределенными после этого).
latest(field_name=None)возвращает последний объект в таблице по дате, используя поле field_name, указанное в качестве поля даты.этот пример возвращает последнюю запись в таблице, согласно
Django > = 1.6
добавлены методы QuerySet first() и last (), которые являются удобными методами, возвращающими первый или последний объект, соответствующий фильтрам. Возвращает None, если нет совпадающих объектов.
самый простой способ сделать это:
books.objects.all().last()вы также используете это, чтобы получить первую запись следующим образом:
books.objects.all().first()
чтобы получить первый объект:
ModelName.objects.first()получить последние объекты:
ModelName.objects.last()вы можете использовать фильтр
ModelName.objects.filter(name='simple').first()это работает для меня.
когда queryset уже исчерпан, вы можете сделать это, чтобы избежать другой подсказки db -
last = queryset[len(queryset) - 1] if queryset else Noneне используйте
try...except....
Джанго не бросаетIndexErrorв этом случае.
Он бросаетAssertionErrorилиProgrammingError(при запуске python с опцией-O)
Если вы используете django 1.6 и выше, теперь это намного проще, так как новый api был введен -
Model.object.earliest()Он даст последний () с обратным направлением.
p. s. - Я знаю свой старый вопрос, я публикую, как будто кто-то идет вперед по этому вопросу, они узнают эту новую функцию и не используют старый метод.
самый простой способ, не беспокоясь о текущем порядке, - это преобразовать набор запросов в список, чтобы вы могли использовать обычную отрицательную индексацию Python. Вот так:
list(User.objects.all())[-1]
Comments