マイグレーション

マイグレーションの流れ

マイグレーションは以下のような流れで行います。

  1. models.pyにモデルを定義
  1. マイグレーションファイルを作成
python manage.py makemigrations
  1. マイグレーションファイルの内容をデータベースに適用
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」が表示されています。


データを追加してみる

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


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


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

コメント

タイトルとURLをコピーしました