わかりましたので、これは尋ねるのは本当にばかげたことのように思えます、そして私はどこかに何かを見逃していると確信しています。
DjangoでSouthを使用して後方移行を実行するにはどうすればよいですか?
だから、モデルを微調整し、schemamigration
で移行を作成し、migrate
で移行を実行しましたが、今ではそれが私が望んでいたものではなく、以前の方法に戻したいと思います。
Dbテーブルを手動で編集して移行ファイルを削除する以外に、移行をロールバックするにはどうすればよいですか? Google経由でSouthを使用した後方移行への参照を見つけましたが、そのための堅実なコード例をまだ見つけていません。
誰でも助けることができますか?
移行の数を把握する必要があります直前ロールバックする数。
アプリには、次のような名前のファイルが含まれた移行ディレクトリが必要です
0000_initial.py
0001_added_some_fields.py
0002_added_some_more_fields.py
0003_deleted_some_stuff.py
通常、./manage.py migrate your_app
を実行すると、Southはすべての新しい移行を順番に実行します。 (データベーステーブルを見て、どのテーブルが「新しい」かを判断します)。
ただし、番号で移行を指定することもできます。Southはデータベースを前方または後方に移行して、その時点までデータベースを移行します。そのため、上記のサンプルファイルでは、既に0003まで移行しており、0003を逆に実行する(事実上、元に戻す)場合は、次を実行します。
./manage.py migrate your_app 0002
サウスはデータベースを見て、すでに0003を実行していることを認識し、0002に戻るために0003の逆移行を実行する必要があると判断します。
(私のような)誰かが初期(0001)から移行する方法について疑問に思った場合に備えて:
Django-admin.py migrate some_app zero
出力:
Running migrations for some_app:
- Migrating backwards to zero state.
< some_app:0001_initial
「ゼロ」は、移行前の特別な状態です。
パラメーターの最後に移行名を追加します。
./manage.py migrate app-name 00xx-migration-name