私のプロジェクトの初期段階では、モデルに多くの変更を加えているため、アプリ用に多くの南部移行が生成されることになりました。実稼働サーバーに移動して移行を実行する前に、それらを何らかの方法で統合して、アプリごとに 100 万回の移行を行わないようにすることはできますか? もしそうなら、どうすればそれを行うことができますか?
質問する
1105 次
3 に答える
5
いつでも既存の移行を削除して、新しい「初期」移行を作成できます。
これを行うには、次のことを行う必要があります。
- アプリの移行ファイルを削除します (フォルダーを完全に削除します)。
- 走る
./manage.py convert_to_south myapp
これにより、アプリの現在の状態に対応する単一の移行が残ります。
または、いつでも最新の移行をまとめてパックできます。
- マージする移行ファイルを削除します (それらが最新のものである場合のみ)
- 走る
./manage.py schemamigration myapp
これにより、削除した移行に対応する新しい移行が作成されます。
これらは両方とも、開発データベースを台無しにする可能性があります。
于 2013-01-09T16:25:36.400 に答える
1
これは開発環境であるため、これが私のやり方です (SQLite を使用します。他の SQL サーバーについては以下を参照してください)。
- すべての変更を行い、移行ファイルを積み上げます。移行ファイルを VCS にコミットしない
- 完了したら、すべての新しい移行ファイルを削除します
- データベースの名前を変更
- manage.py 移行を実行します。これにより、変更を加える前のデータベース構造が作成されます。
- manage.py makemigrations を実行します。これにより、現在の状態を反映する必要な移行が作成されます
- 最終的な構造とデータが既にある元のデータベースを元に戻す
- 移行ファイルをコミットする
「適切な」SQL サーバーを使用する場合は、本番環境と開発環境の 2 つのデータベースだけを保持してください。手順 3 で名前を変更するのではなく、運用データベースを指すようにプロジェクト設定を変更します。また、手順 4 は省略できます。
于 2015-09-14T13:40:20.303 に答える