Метод 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,
который выбирает только указанные поля