11
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Django データベース作成について整理してみた

Posted at

DjangoのDatabase作成方法を整理しました

プロジェクト作成からwebアプリケーションの作成までは次のサイトを参考に実施済みとなります
https://docs.djangoproject.com/ja/3.2/intro/tutorial01/

プロジェクトはmysite、webアプリケーションはtestで作成しています

Databaseを作成するまでの流れ

Django経由でDatabaseを作成、変更する手順としては大まかに3工程発生します
2021-11-30-17-43-09.png

  1. modelに作成したいテーブルの情報を記載
  2. modelからmigrations(更新部分をまとめたもの)作成
  3. 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 でアクセスできます

TEST(webアプリケーション名)という項目ができていれば完了となります
2021-11-30-17-42-38.png

11
8
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
11
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?