Menu
CoddyTech

Порядок по умолчанию

Часть раздела Модели и панель администратора путешествия по Django на Coddy. Урок 6 из 23.

Ваши книги возвращаются без заранее заданного порядка: в том порядке, который выдаёт база данных. Модель может один раз задать порядок для всех запросов, которые не запрашивают другой порядок. Параметры всей модели, а не отдельного поля, указываются во внутреннем классе с именем Meta:

class Movie(models.Model):
    ...

    class Meta:
        ordering = ["-released", "title"]

ordering — это список имён полей. Имя без дополнительных символов сортирует от меньшего к большему, для текста — от А до Я; минус перед именем задаёт обратный порядок, поэтому здесь сначала перечислены самые новые фильмы. Второе имя разрешает совпадения: фильмы, вышедшие в один день, перечисляются от А до Я.

challenge icon

Задание

Легко
  • Упорядочивай книги по названию от А до Я, если другой порядок не задан.

Нажми «Run» и открой вкладку Data: четыре книги перечислены в алфавитном порядке от А до Я. Вкладка Shell показывает тот же порядок при выполнении Book.objects.all().

Попробуйте сами

from django.db import models


class Book(models.Model):
    class Genre(models.TextChoices):
        FICTION = "fiction", "Fiction"
        SCIFI = "scifi", "Science fiction"
        MYSTERY = "mystery", "Mystery"
        HISTORY = "history", "History"

    title = models.CharField(max_length=200)
    author = models.CharField(max_length=100)
    year = models.IntegerField()
    price = models.DecimalField(max_digits=6, decimal_places=2)
    is_read = models.BooleanField(default=False)
    finished = models.DateField(null=True, blank=True)
    summary = models.TextField(blank=True)
    genre = models.CharField(max_length=20, choices=Genre, default=Genre.FICTION)

    def __str__(self):
        return f"{self.title} by {self.author}"
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Модели и панель администратора

Потренируйтесь самостоятельно: Песочница Django