スポンサーリンク

[Django 2] マイグレーションでモデルからテーブルを作る

Djangoのマイグレーション機能を使って、

モデルからテーブルを作ります。

環境

  • Windows10
  • Django 2.1.4
  • sqlite3

フォルダ構成

フォルダ構成は下記の通りです。

プロジェクト名 [example]

アプリケーション名[testapp]

example
│  db.sqlite3
│  manage.py
│
├─example
│  │  settings.py
│  │  urls.py
│  │  wsgi.py
│  │  __init__.py
│  │
│
└─testapp
    │  admin.py
    │  apps.py
    │  models.py
    │  tests.py
    │  urls.py
    │  views.py
    │  __init__.py
    │
    ├─migrations
       │  0001_initial.py
       │  __init__.py
       │

 

モデルの作成

testapp/models.pyの編集

models.pyに、テーブル名やカラム名の設定を書きます。

from django.db import models

class Account(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=30)

 

setting.pyにアプリケーションを適用させる

example/setting.pyを下記のように編集します。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'testapp.apps.TestappConfig', # 追加
]

これで、testappがexampleプロジェクトのアプリだと認識できます。

 

マイグレーションでテーブルを作る

下記のコマンドを実行して、マイグレーションを行うためのファイルを作ります。

  • python manage.py makemigrations testapp

migrationsディレクトリに、マイグレーションのためのテーブルの設定が書かれています。

> python manage.py makemigrations testapp
Migrations for 'testapp':
  testapp\migrations\0001_initial.py
    - Create model Account

models.pyのテーブル設定を更新するたびに0001_initial.py、0002_initial.pyとファイルが出力され、変更履歴を残してくれます。

 

 

makemigrationsコマンドを実行したら、

下記のコマンドを実行してマイグレーションの実行をします。

python manage.py migrate

実行結果の中に下記が含まれていたら、テーブルが作成できています。

  • Applying testapp.0001_initial… OK

テーブルのデータは、

sqlite3の場合、example/db.sqlite3に保存されています。

フリーソフトのSQLiteSpyでdb.sqlite3を開くと、testapp_accountというテーブルが作成されたということがわかります。