Menu
CoddyTech

デフォルトの並び順

CoddyのDjangoジャーニー「モデルと管理サイト」セクションの一部。レッスン 6/23。

本は、約束された順序ではなく、データベースが返す順序で戻ってきます。モデルで一度順序を設定すれば、別の順序を要求しないすべてのクエリに適用されます。フィールドごとではなく、モデル全体のオプションは、Metaという名前の内部クラスに記述します。

class Movie(models.Model):
    ...

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

orderingはフィールド名のリストです。名前だけを指定すると、小さい値から大きい値へ、テキストならAからZへ並べ替えます。先頭にマイナスを付けると逆順になるため、この例では新しい映画が先に並びます。2つ目の名前は同順位の場合に使われます。同じ日に公開された映画はAからZの順に並びます。

challenge icon

チャレンジ

簡単

books/models.pyで、特に並び順が指定されていないときは、書籍がタイトルのアルファベット順(AからZ)で表示されるようにしてください。

「実行」を押して、ShellタブでBook.objects.all()と入力してください。最初にDune、最後にThe Hobbitが表示されます。

自分で試してみよう

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プレイグラウンド