РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
79 of 818 menu

Метод reverse

Метод reverse применяется к QuerySet и возвращает новый QuerySet с записями, упорядоченными в обратном порядке относительно текущей сортировки. Если в запросе не задана сортировка через order_by, то метод работает в сочетании с сортировкой по умолчанию, заданной в Meta классе модели. Метод полезен для инвертирования порядка вывода записей без необходимости переопределения сортировки.

Метод принимает один необязательный параметр:

  • ⁅b⁆*args⁅/b⁆ - имена полей, по которым производится реверсирование. Если поля не указаны, то реверсирование выполняется по текущему порядку сортировки.

Синтаксис

Model.objects.order_by('field').reverse() Model.objects.all().reverse()

Пример . С сортировкой по умолчанию

Рассмотрим модель Article с сортировкой по полю 'created_at' в Meta классе:

from django.db import models class Article(models.Model): title = models.CharField(max_length=200) created_at = models.DateTimeField(auto_now_add=True) class Meta: ordering = ['-created_at']

Получим первые 5 статей в обратном порядке:

from myapp.models import Article res = Article.objects.all().reverse()[:5] for article in res: print(article.title)

Результат выполнения кода:

"article 1" "article 2" "article 3" "article 4" "article 5"

Пример . С явной сортировкой

Реверсируем статьи, отсортированные по полю 'title':

from myapp.models import Article articles = Article.objects.order_by('title') reversed_articles = articles.reverse() for article in reversed_articles[:3]: print(article.title)

Результат выполнения кода:

"article z" "article y" "article x"

Пример . С комбинированной сортировкой

Реверсируем статьи, отсортированные по нескольким полям:

from myapp.models import Article res = Article.objects.order_by('status', '-created_at').reverse() for article in res[:5]: print(f"{article.title} - {article.status}")

Результат выполнения кода:

"article 4 - draft" "article 3 - draft" "article 2 - published" "article 1 - published" "article 5 - archived"

Смотрите также

  • метод order_by,
    который задаёт сортировку QuerySet
  • метод values,
    который возвращает QuerySet словарей
  • метод values_list,
    который возвращает QuerySet кортежей
  • метод only,
    который выбирает только указанные поля
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить