web-dev-qa-db-ja.com

Django migrateコマンドで移行をスキップするにはどうすればよいですか?

最初に、Django southではなく1.7で導入された移行について質問しています。

移行があるとします001_add_field_x002_add_field_y、両方ともデータベースに適用されます。今、気が変わって、2番目の移行を元に戻し、別の移行に置き換えます003_add_field_z

言い換えると、002をスキップして001と003を適用したいのですが、どうすればよいですか?

追伸001に逆方向に移行できることは知っていますが、003移行を行ってmigrateコマンドを実行すると、001から003がすべて適用されますか?

18
NeoWang

--fakeオプションを使用できます。

0001に戻ると、実行できます

python manage.py migrate <app> 0002 --fake

そして、実行します

python manage.py migrate <app> #Optionally specify 0003 explicitly

この場合、0003のみが適用されます。

すべての環境/他の開発者に対してこのプロセスを実行したくない場合は、移行ファイルを削除して、新しいmakemigrationを実行し、そのファイルをコミットします-はい、migrate--fakeオプション付き

42
karthikr

この特定のケースには適用できませんが、all未適用の移行をスキップする必要がある場合、または使用する必要がある場合は、これを使用できます。

python manage.py migrate --fake

入力を少し節約できます。

3
Nagev