Django South による後方移行 質問する

Django South による後方移行 質問する

さて、これは本当に馬鹿げた質問のように思えますし、どこかで何かを見落としているのは確かです。

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 の逆移行を実行する必要があると判断します。

おすすめ記事