マイグレーションの流れ
マイグレーションは以下のような流れで行います。
- models.pyにモデルを定義
- マイグレーションファイルを作成
python manage.py makemigrations
- マイグレーションファイルの内容をデータベースに適用
python manage.py migrate
models.pyにモデルを定義
モデルを定義するには「test_app/modles.py」に記述します。今回は「ShareCode」というテーブルを作成します。
from django.db import models # Create your models here. from django.conf import settings class ShareCode(models.Model): title = models.CharField(verbose_name = 'タイトル', max_length=64) code = models.TextField(verbose_name = 'コード', blank=True) description = models.TextField(verbose_name = 'コード説明', blank=True) creator = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True, blank=True, verbose_name = '作成者' ) created_at = models.DateTimeField(verbose_name = '作成日時', auto_now_add=True) # 最初だけ日時を取得 updated_at = models.DateTimeField(verbose_name = '更新日時', auto_now=True) # auto_nowは更新がある度に日時を取得 def __str__(self): return self.title
マイグレーションファイルを作成
以下のコマンドを実行し、マイグレーションファイルを作成します。
python manage.py makemigrations

コマンド実行後、「0001_initial.py」が作成されます。

マイグレーションファイルの内容をデータベースに適用
マイグレーションを適用する前にDBの内容を見てみます。
パスが通ってないと思うので、sqlite3コマンドを探します。
find ~/ -name sqlite3 | grep -v pkgs | grep bin

見つけたsqlite3コマンドの引数にtest_project ディレクトリ配下にある「db.sqlite3」を指定して実行します。
/home/testuser/work/pyenv/versions/anaconda3-2024.10-1/bin/sqlite3 db.sqlite3

テーブル一覧を確認すると以下のテーブルがあることが確認できます。
.tables

以下のコマンドを実行し、データベースに適用します。
python manage.py migrate

マイグレーション実行後、テーブル一覧を見るとtest_app_sharecodeテーブルが作成されている。

管理画面への追加
test_app/admin.pyの「Register your models here.」の下にモデルを追加します。
from django.contrib import admin # Register your models here. from .models import ShareCode admin.site.register(ShareCode)
開発サーバーを起動し、管理画面に入ると「Share codes」が表示されています。

データを追加してみる
「追加」をクリックするとデータを追加することができます。

必要な項目を入力し、「保存」をクリックします。

「文字を表示」という新しいレコードが作成されました。

コメント