2017-08-20 9 views
-1

私は新しいDjangoのプロジェクトを開始するとき、それはマイグレーションを適用するために私を促す 、しばらくの間、この概念のまわりで私の頭をラップしてきた:Djangoの移行とは何ですか?

# python manage.py runserver 
Performing system checks... 

System check identified no issues (0 silenced). 

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. 
Run 'python manage.py migrate' to apply them. 

私はそれを何をする必要がありますなぜですか?誰でも簡潔な説明と簡単なユースケースをmigrationと言うことができますか?

編集:この質問を発行することにしました。これは、stackoverflowで似たような質問が表示されなかったためです。ドキュメントの説明よりも良い説明があります。

+1

https://docs.djangoproject.com/ja/dev/topics/migrations/テーブル/カラムなどを追加/削除する –

答えて

1

移行は、データベーススキーマの変更を管理する優れた方法です。

1 - アプリケーションの複数のインスタンスがある場合 - 開発+生産は一般的な最小値ですが、他の人によってインストールされる可能性があります(スタンドアローンまたは他のものと一緒にアプリケーションがインストールされている可能性があります) Djangoアプリケーション)を使用すると、開発者は、データベーススキーマの変更を安全に&の制御下で伝播することができます。アプリケーションの最新バージョン(最新のデータベースモデルを含む)に、機能するデータベースが一致することを保証することができます。したがって、一般的な答えは、移行が非常に一般的な問題を比較的優雅な方法で解決することです。

2 - 具体的には、別の回答でも指摘されているように、まったく新しいDjangoプロジェクトであっても、ユーザと権限に関する初期移行があります。私が考えることができるどんな重要なDjangoアプリケーションでも、これらのテーブルが機能する必要があります。つまり、それらを使用しないと、おそらくDjangoがフレームワークとして提供しなければならない多くのメリットがありません。マイグレーションを含めることで、開発者はどのデータベースを使用するか(SQLite、MySQL、PostgreSQLなど)、そのデータベースの格納場所や設定を(通常はプロジェクトのsettings.pyで)決めることができます。残りのケア。

1

これらの移行は、Djangoがデフォルトで作成するモデル(ユーザー、グループ、アクセス許可など)用です。

あなたがそれらを使用しない場合は、あなたの設定でそれらのアプリケーションをコメントアウトすることができます。それ以外の場合は、それらの移行を実行してアプリケーションに必要なテーブルを作成する必要があります。

+0

私は、ジャンゴがこれを自動的に行うことができないため、ユーザーは気にすることが少ない?モデル名をあらかじめ決めておくことができないため、やっていますか? – Sajuuk

+0

これらのモデルを変更したいのですが?柔軟性を失うことなく、自動的に対処することはできません。 –

+0

DjangoはCMSではなく、フレームワークであることを覚えておいてください。これらの詳細に晒されたくない場合、Djangoは適切な解決策ではありません。 –

関連する問題