DjangoのDatabase作成方法を整理しました
プロジェクト作成からwebアプリケーションの作成までは次のサイトを参考に実施済みとなります
https://docs.djangoproject.com/ja/3.2/intro/tutorial01/
プロジェクトはmysite、webアプリケーションはtestで作成しています
Databaseを作成するまでの流れ
Django経由でDatabaseを作成、変更する手順としては大まかに3工程発生します
- modelに作成したいテーブルの情報を記載
- modelからmigrations(更新部分をまとめたもの)作成
- migrationsを元にmigrateを実行し、Databaseを更新していくという流れです
またDjangoのサイトにはadminページというDatabaseの情報を見れるページがあります
adminページにて情報の表示、編集を行うようにするためには次の手順が必要です
- user作成
- admin.pyの更新
model作成
modelを作成する際は、下のように記述します
class テーブル名(models.Model):
列名 = フィールドタイプ(フィールドオプション)
フィールドタイプは種類があるので、下の記事などを参考にしてみてください
https://note.com/saito_pythonista/n/n920bbc48c8fd
変更箇所:mysite\test\models.py
作成したwebアプリケーション配下のmodels.pyを変更する必要があります
「# Create your models here.」を目印にしてみてください
from django.db import models
# Create your models here.
class test(models.Model):
test_id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=100)
続いて、settings.pyを更新することで、
mysiteに認識させます
変更箇所:mysite\settings.py
31行目あたり
今回の場合、「'test.apps.TestConfig',」を追記しました
わからなくなったときは、\作成したプロジェクト名\作成したwebアプリケーション名\apps.pyのクラス名を確認するとわかります
# Application definition
INSTALLED_APPS = [
'test.apps.TestConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
migrations作成
migrationsの作成は、pythonを実行すればOKです
python manage.py makemigrations test
Migrations for 'test':
test/migrations/0001_initial.py
- Create model test
これでmigrationsファイルの作成は完了です
結果にある通り「test/migrations/0001_initial.py」が新しく作成されています
もしどんなSQL文が実行されるか気になる場合、次のコードを実行するとわかります
test 0001の部分は適宜変更してください
webアプリケーション名とmigrationsファイルの数字部分(例でいう0001_initial.pyの0001)の組み合わせになります
python manage.py sqlmigrate test 0001
BEGIN;
--
-- Create model test
--
CREATE TABLE "test_test" ("test_id" integer NOT NULL PRIMARY KEY, "name" varchar(100) NOT NULL);
COMMIT;
Datebaseを作成、更新
migrateの実行もpython実行でOKです
python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, polls, sessions, test
Running migrations:
Applying test.0001_initial... OK
user作成
adminページのログインユーザの作成です
Email addressは空白でも作成できます
python manage.py createsuperuser
Username:
Email address:
Password:
Password (again):
Superuser created successfully.
admin.pyの更新
変更箇所:mysite\test\admin.py
「# Register your models here.」を目印にしてみてください
# Register your models here.
from .models import test
admin.site.register(test)
adminページ確認
adminページにアクセスし、作成したuserでログインします
デフォルトは、http://localhost:8000/admin でアクセスできます