8

現在 35 の南への移行があるアプリがあります。これらは、新しい展開を設定するときに時間がかかります (新しい展開を頻繁に作成します)。アプリは継続的に進化しており、移行が追加されています。さらに、移行には、潜在的に複雑なデータ移行と、SQLite3 を壊すいくつかのカスタム移行が含まれます (すべてが Postgres 上にあるため、現時点では大きな問題ではありませんが、迅速なテスト環境をセットアップできるのは素晴らしいことです)。うまくいかない可能性があるもの。

私たちの展開と開発者はすべて最新です。アプリのすべての移行を消去し、アプリの現在の状態をキャプチャする単一の初期移行 (0001) を作成してから、新しい移行を進めたいと思います。そこの。数年前に別のアプリでこれを行いましたが、うまくいきましたが、プロセスが何であったかを忘れてしまい、その方法を説明したブログ投稿を見失いました. 誰かが私のためにこのプロセスを分解できますか?

4

1 に答える 1

13

私はこれを理解しました(それほど悪くはありませんでした)。移行のリセットを設定するには、次の手順を実行します。

rm <app-dir>/migrations/*
python manage.py schemamigration <app-name> --initial
python manage.py migrate <app-name> 0001 --fake  --delete-ghost-migrations

変更をリポジトリにコミットし、別の場所にコードをデプロイするたびに、次を実行します。

python manage.py migrate <app-name> 0001 --fake --delete-ghost-migrations

最後に他の場所に移行してからリセットするまでの間に新しいものを追加しないでください。そうしないと、新しい 0001 移行がスキーマと一致しなくなります。

警告: guettli のコメント (および私の回答) を参照してください。

于 2012-10-10T15:30:07.440 に答える