【学習メモ】MakemigrationsとMigrateについて


概要

モデルをデータベースに反映するためにmigrateを実行しますが、makemigrationsがあるのを知ったので、少しまとめてみます。

MakemigrationsとMigrateの違い

  • migrateはモデルをデータベースに反映させる
  • makemigrationsはマイグレーションファイルを作成する

つまりmigrateをすることで、データベース構成を変更したり、その変更を取り消したりすることが出来るが、データベース構成のバージョン管理をするのに、makemigrationsでマイグレーションファイルを作成する。

  • 公式からは下記のように記載されています。

マイグレーション (Migrations) は、Django でモデルに対して行った変更 (フィールドの追加やモデルの削除など) をデータベーススキーマに反映させる方法です。

マイグレーションというのは、データベーススキーマに対するバージョン管理システムのようなものです。makemigrations はモデルの変更点を1つのマイグレーションファイルにパッケージングし(コミットのようなものです)、migrate はその変更点をデータベースに適用する、というわけです。
引用:https://docs.djangoproject.com/ja/2.2/topics/migrations/

  • 図にすると、わかりやすいですね。

コマンド

実行方法はシンプルで、下記のようになります。

makemigrations

terminal
$ python manage.py makemigrations

migrate

terminal
$ python manage.py migrate

以上