8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Djangoのモデルにおけるdb_table、verbose_name、verbose_name_plural の違いまとめ

Last updated at Posted at 2025-09-24

概要

 PythonのフレームワークであるDjangoを学習していたところ、モデルを定義するMetaクラスのオプション、db_table、verbose_name、verbose_name_pluralについて違いなどが分からなかったため、公式ドキュメント等を確認してみました。しかし、使い分ける方法など求めている情報がなかなか見当たらず、情報もまとまっていなかったため今回整理してみました。

db_table とは?

  • 役割:データベース上で使われるテーブル名を指定します。
  • 指定しない場合:自動的に<app名>_<モデル名(小文字)>という形式でテーブルを作成します。
    (例:app名がbookstore、モデル名がBookの場合、テーブル名はbookstore_book

使用例)

class Book(models.Model):
    title = models.CharField(max_length=100)

    class Meta:
        db_table = "library_books"
  • この場合、テーブル名はlibrary_booksになります。

verbose_name とは?

  • 役割:管理画面にてモデルの表示名を指定します。
  • 指定しない場合:自動的に<モデル名(小文字)>が設定されます。
    (例:モデル名がBookの場合、表示名はbook
  • 英語のモデル名から、日本語などの分かりやすい表示名へ変更するために使用します。

使用例)

class Book(models.Model):
    title = models.CharField(max_length=100)

    class Meta:
        verbose_name = "書籍"
  • 管理画面にてモデルの表示名を「書籍」 と表示します。
    管理画面:Qiita投稿用(name設定) - 編集1.jpg

verbose_name_plural とは?

  • 役割:管理画面にてモデルの複数形の表示名を指定します。
    (例:「書籍」というモデルの「書籍一覧」など)
  • 指定しない場合:自動的に<(verbose_name) + "s">が設定されます。
    (例:verbose_name="book" の場合、表示名はbooks
  • verbose_name="書籍"と設定し、verbose_name_pluralを設定しなかった場合、「書籍s」となり不自然となります。
  • また、verbose_name="category" と設定し、verbose_name_plural を設定しなかった場合、本来複数形であればcategoriesと表示されるべきですが、categorysと表示されます。(英語の複数形変換は自動で正確にならないこともあり注意が必要)

使用例)

class Book(models.Model):
    title = models.CharField(max_length=100)

    class Meta:
        verbose_name_plural = "書籍一覧"
  • 管理画面にてモデルの複数形表示名を「書籍一覧」と表示します。
    管理画面:Qiita投稿用(plural設定) - 編集1.jpg

実際の活用例

例えば、図書館システムを作るときに以下のように書くと、開発者や運用者双方に優しい設計になります。

class Book(models.Model):
    title = models.CharField(max_length=100)

    class Meta:
        db_table = "library_books"
        verbose_name = "書籍"
        verbose_name_plural = "書籍一覧"
  • データベースレベルでは「library_books」というテーブル名になり、 管理画面では「書籍」「書籍一覧」と表示され、直感的で分かりやすい名称になります。

まとめ

db_table は開発者がデータベースを管理しやすくするための設定であり、
verbose_name と verbose_name_plural は運用者が管理画面を使いやすくするための設定と言えます。それぞれの役割を理解し、適切に設定することでプロジェクト全体がスムーズに運用できると考えます。

▼具体的な比較は以下の表にまとめました。

オプション 役割 主に影響する場所
db_table データベースのテーブル名を指定 データベース
verbose_name 管理画面にてモデル表示名を指定   管理画面
verbose_name_plural 管理画面にてモデルの複数形表示名を指定 管理画面

▼verbose_name と verbose_name_plural の指定による表示名の違いについて、以下の表にまとめました。
(表示例:モデル名はBook、指定する場合 verbose_name には書籍、verbose_name_plural には書籍一覧を指定)

設定 表示結果 表示例
両方指定しない verbose_name:<モデル名(小文字)>
verbose_name_plural:<(verbose_name) + "s">
verbose_name:book
verbose_name_plural:books
verbose_name のみ指定 verbose_name:指定した値
verbose_name_plural:<(verbose_name) + "s">
verbose_name:書籍
verbose_name_plural:書籍s
verbose_name_plural のみ指定 verbose_name:<モデル名(小文字)>
verbose_name_plural:指定した値
verbose_name:book
verbose_name_plural:書籍一覧
両方指定する verbose_name:指定した値
verbose_name_plural:指定した値
verbose_name:書籍
verbose_name_plural:書籍一覧

参考文献:

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?