web-dev-qa-db-ja.com

Django移行ファイルの名前を変更しても安全ですか?

Django 1.8以降、makemigrationsコマンドには--name, -nオプション 作成された移行ファイルのカスタム名を指定します。

古いバージョンのDjangoで、自動生成された名前でマイグレーションファイルを作成し、ファイルの名前を手動で変更するのが安全かどうかを知りたいのですが、期待どおりに動作するようです。潜在的なリスク?

29
geckon

これは機能しますが、小さな警告があります:Djangoは、名前が変更された移行が適用されたことを認識しなくなります。

したがって、移行の名前を変更する手順は次のとおりです。

  1. ファイルの名前を変更します。
  2. 依存関係を新しいファイルに再ポイントします。
  3. 名前を変更した移行がすでに適用されている場合は、--fakeを使用して再度適用します。

まったく新しい移行の場合、2と3は適用されません。名前を変更しても問題ありません。

30
knbk

これはDjango=移行が押しつぶされるたびに発生します。クラス変数replacesを含む新しいファイルが生成されます。これは、置き換えられる移行ファイルをリストします。

したがって、ファイル移行ファイルの名前を変更するには、Migrationクラスの次の変数を追加します。

replaces = [('app name', 'migration file name'), ]

そして、すべてがファイル変更前と同じように機能します。

13
oden