WD5 - разработка сайтов

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()

None