Cream-Kuchen

Djangoでwebアプリのテーブルに名前を付ける

はじめに

Djangoでwebアプリを開発する時、テーブルをどのように名付けますか?

自動的に決まる方法と、任意に名前を付ける方法の2通りを紹介します。

目次


1, 自動的に決まる方法 (公式)

公式docsを調べるとこちらの通りです。

Model Meta options | Django documentation | Django
f:id:Cream-Kuchen:20200610202634p:plain

2, 自動的に決まる方法 (要約)

公式docsをざっくり要約すると下記の通りです。

Djangoは、アプリ名やアプリを構成するモデルのクラス名から自動的にテーブルに名前を付けます。 その方法は、アプリ名とモデルのクラス名をアンダースコアで繋げるというものです。 例えば、python manage.py startapp bookstore のコマンドで作成した bookstore アプリについて、 そのモデルが models.pyBook というクラスで定められている場合、テーブルの名前は 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アプリのテーブルに名前を付ける方法を紹介しました。

モデルのテーブル名が作成時に分かれば、テーブルを参照する開発にも取り掛かれますね。

下記も参考に開発を進めてみてください。

cream-kuchen.hatenablog.com