Django выбор нескольких последних записей (last, reverse)
Для выбора последних записей из базы данных нужно уточнить, что именно считается последними.
Если есть поле даты и времени и оно заполняется, то нужно выбирать по нему.
Если нужно пропустить какие-то записи, то их нужно исключать.
В данном случае приведу пример когда специальных полей нет
MyModel.objects.order_by("-id")[0:5]
Данный приём основан на том, что django для всех таблиц создает индексы с id, они добавляются автоматически по возрастанию, следовательно можем отсортировать в обратном порядке и получить срез последних пяти записей.
Практический пример с шаблонным тегом
@register.assignment_tag
def last_article():
last_pages = my_model.objects.order_by("-id")[0:3]
return {
'last_pages': last_pages,
}
Вывод в шаблоне
{% load my_teplate_tag_library %}
{% last_article as last %}
{% for article in last.last_pages %}
- {{ article.title }}
{% endfor %}
Вывод одной последней записи возможен с помощью
MyModel.objects.last()
Так же в зависимости от задачи если была произведена сортировка по order_by и последними считаются записи в обратном порядке, то возможно вместо "-" использовать функцию reverse()