Djangoでwebアプリのテーブルに名前を付ける
はじめに
Djangoでwebアプリを開発する時、テーブルをどのように名付けますか?
自動的に決まる方法と、任意に名前を付ける方法の2通りを紹介します。
目次
1, 自動的に決まる方法 (公式)
公式docsを調べるとこちらの通りです。
Model Meta options | Django documentation | Django
2, 自動的に決まる方法 (要約)
公式docsをざっくり要約すると下記の通りです。
Djangoは、アプリ名やアプリを構成するモデルのクラス名から自動的にテーブルに名前を付けます。
その方法は、アプリ名とモデルのクラス名をアンダースコアで繋げるというものです。
例えば、python manage.py startapp bookstore のコマンドで作成した
bookstore アプリについて、
そのモデルが models.py で Book
というクラスで定められている場合、テーブルの名前は bookstore_book になります。
3, 自動的に決まる方法 (詳解)
要約中の具体例を、開発の流れやアプリのフォルダ構成から解説します。
まず、コマンド python manage.py startapp bookstore により、
bookstore フォルダが作成されます。
次に、bookstore フォルダ配下にある
models.py でモデルを Book
というクラスで定義します。
最後に、コマンド python models.py migrate を実行すると
データベースにテーブルが
bookstore_book という名前で作成されます。
※ クラス名に大文字が含まれていても、テーブル名は小文字になるようです。
# 参考:bookstoreフォルダ配下のmodels.py from django.db import models class Book(models.Model): # 以下、クラス内でテーブルのカラム定義を記述
4, 任意に名前を付ける方法
テーブル名を自動的に決めさせず、任意の名前を付ける方法もあります。
先程の例でテーブル名を comic にしたい場合、
Meta クラスに db_table を設定してください。
# 参考:bookstoreフォルダ配下のmodels.py from django.db import models class Book(models.Model): class Meta: db_table = 'comic'
おわりに
Djangoでwebアプリのテーブルに名前を付ける方法を紹介しました。
モデルのテーブル名が作成時に分かれば、テーブルを参照する開発にも取り掛かれますね。
下記も参考に開発を進めてみてください。