さて、これは本当に馬鹿げた質問のように思えますし、どこかで何かを見落としているのは確かです。
Django で South を使用して後方移行を実行するにはどうすればよいでしょうか?
そこで、モデルを微調整し、 を使用して移行を作成しschemamigration
、 を使用して移行を実行しましたがmigrate
、これでは自分が望んでいたものとは少し違うことに気づき、以前の状態に戻したいと思いました。
手動で DB テーブルを編集して移行ファイルを削除する以外に、移行をロールバックするにはどうすればよいでしょうか? Google で South を使用した後方移行に関する参照を見つけましたが、そのための確かなコード例はまだ見つかっていません。
誰か助けてくれませんか?
ベストアンサー1
ロールバックする移行の直前の移行番号を把握する必要があります。
アプリには移行ディレクトリがあり、その中に次のような名前のファイルがあるはずです。
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
South はデータベースを確認し、0003 がすでに実行されていることを認識し、0002 に戻るには 0003 の逆移行を実行する必要があると判断します。