カテゴリ: Django 更新日: 2026/02/05

Django ORMで並び替え・ソートを完全解説!order_byの使い方を初心者向けにやさしく説明

Django ORMで並び替え・ソートを行う方法(order_by)
Django ORMで並び替え・ソートを行う方法(order_by)

先生と生徒の会話形式で理解しよう

生徒

「Djangoでデータを一覧表示したら、順番がバラバラで見づらいです。並び替えはできますか?」

先生

「できますよ。Djangoでは、ORMという仕組みを使って、データベースの並び順を簡単に変えられます。」

生徒

「ORMって難しそうですが、初心者でも使えますか?」

先生

「大丈夫です。パソコンを触ったことがなくても、順番に説明すれば理解できます。まずは並び替えの基本から見ていきましょう。」

1. Django ORMとorder_byとは何か?

1. Django ORMとorder_byとは何か?
1. Django ORMとorder_byとは何か?

Django ORMとは、データベースを直接操作する代わりに、Pythonのコードでデータを扱える仕組みです。難しいSQLを書かなくても、データの取得や並び替えができます。

order_byは、取得したデータの順番を決めるための命令です。たとえば、名前順、日付順、数字の小さい順など、人が見やすい順番に整えるために使います。

これは、本棚の本を「タイトル順」や「発売日順」に並べ直すイメージと同じです。

2. 並び替えをしない場合のデータの状態

2. 並び替えをしない場合のデータの状態
2. 並び替えをしない場合のデータの状態

Djangoで何も指定せずにデータを取得すると、データベースに保存された順番で表示されます。この順番は人にとって意味がなく、毎回同じとは限りません。

そのため、ブログ記事一覧や商品一覧では、意図した順番で表示するためにorder_byが重要になります。

3. order_byで昇順に並び替える基本例

3. order_byで昇順に並び替える基本例
3. order_byで昇順に並び替える基本例

昇順とは、「小さいものから大きいものへ」「古いものから新しいものへ」という並び方です。


from blog.models import Article

articles = Article.objects.order_by("created_at")

この例では、created_at(作成日)を基準に、古い記事から順番に並び替えています。プラス記号は不要で、フィールド名を書くと昇順になります。

4. 降順で並び替える方法(新しい順)

4. 降順で並び替える方法(新しい順)
4. 降順で並び替える方法(新しい順)

降順とは、「大きいものから小さいものへ」「新しいものから古いものへ」という並び方です。


from blog.models import Article

articles = Article.objects.order_by("-created_at")

フィールド名の前にマイナス記号を付けるだけで、降順になります。最新の記事を一番上に表示したいときによく使われます。

5. 数字や文字で並び替える例

5. 数字や文字で並び替える例
5. 数字や文字で並び替える例

order_byは、数字や文字でも並び替えができます。たとえば、価格や名前順です。


from shop.models import Product

products = Product.objects.order_by("price")

これは、商品を価格の安い順に並べる例です。数字は自動的に小さい順から大きい順になります。


products = Product.objects.order_by("name")

文字の場合は、五十音やアルファベット順で並び替えられます。

6. 複数の条件で並び替える方法

6. 複数の条件で並び替える方法
6. 複数の条件で並び替える方法

Django ORMでは、並び替えの条件を複数指定できます。たとえば、「カテゴリ順、その中で新しい順」といった形です。


from blog.models import Article

articles = Article.objects.order_by("category", "-created_at")

まずカテゴリで並び替え、そのカテゴリの中で新しい記事が上に来ます。整理された一覧を作りたいときに便利です。

7. モデル側で並び順を決める方法

7. モデル側で並び順を決める方法
7. モデル側で並び順を決める方法

毎回order_byを書くのが大変な場合は、モデルにあらかじめ並び順を設定できます。


class Article(models.Model):
    title = models.CharField(max_length=100)
    created_at = models.DateTimeField()

    class Meta:
        ordering = ["-created_at"]

これにより、Articleを取得したときは常に新しい順で並びます。ブログ記事ではよく使われる設定です。

8. order_byを使うときの注意点

8. order_byを使うときの注意点
8. order_byを使うときの注意点

並び替えは便利ですが、データが非常に多い場合は処理が遅くなることがあります。そのため、必要な場面だけで使うことが大切です。

また、存在しないフィールド名を指定するとエラーになるため、モデルで定義した名前を正確に書くようにしましょう。

Django ORMのorder_byは、初心者でも安全にデータを整理できる、非常に重要な機能です。

カテゴリの一覧へ
新着記事
New1
Django
Djangoバリデーション完全入門|cleanメソッドで学ぶカスタムチェックの書き方【初心者向け】
New2
Flask
FlaskとAWS S3を連携!静的ファイルを効率よく配信する初心者向け完全ガイド
New3
Python
Pythonで例外の種類ごとに処理を分ける方法を完全解説!初心者でもわかる複数except入門
New4
Python
Pythonでリストの要素を検索・取得する方法!index()やin演算子の活用法
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.3
Java&Spring記事人気No3
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.4
Java&Spring記事人気No4
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.5
Java&Spring記事人気No5
Python
Pythonのコーディング規約(PEP8)とは?初心者でもわかる書き方の基本ルール
No.6
Java&Spring記事人気No6
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説
No.7
Java&Spring記事人気No7
Flask
Flaskでフロントエンドからファイルアップロードを行う基本手順【初心者向け】
No.8
Java&Spring記事人気No8
Flask
Flaskでデータベースエラーを処理する方法!初心者にもわかる例外の使い方