6

私のプロジェクトの初期段階では、モデルに多くの変更を加えているため、アプリ用に多くの南部移行が生成されることになりました。実稼働サーバーに移動して移行を実行する前に、それらを何らかの方法で統合して、アプリごとに 100 万回の移行を行わないようにすることはできますか? もしそうなら、どうすればそれを行うことができますか?

4

3 に答える 3

5

いつでも既存の移行を削除して、新しい「初期」移行を作成できます

これを行うには、次のことを行う必要があります。

  1. アプリの移行ファイルを削除します (フォルダーを完全に削除します)。
  2. 走る./manage.py convert_to_south myapp

これにより、アプリの現在の状態に対応する単一の移行が残ります。


または、いつでも最新の移行をまとめてパックできます。

  1. マージする移行ファイルを削除します (それらが最新のものである場合のみ)
  2. 走る./manage.py schemamigration myapp

これにより、削除した移行に対応する新しい移行が作成されます。


これらは両方とも、開発データベースを台無しにする可能性があります。

于 2013-01-09T16:25:36.400 に答える
1

これは開発環境であるため、これが私のやり方です (SQLite を使用します。他の SQL サーバーについては以下を参照してください)。

  1. すべての変更を行い、移行ファイルを積み上げます。移行ファイルを VCS にコミットしない
  2. 完了したら、すべての新しい移行ファイルを削除します
  3. データベースの名前を変更
  4. manage.py 移行を実行します。これにより、変更を加える前のデータベース構造が作成されます。
  5. manage.py makemigrations を実行します。これにより、現在の状態を反映する必要な移行が作成されます
  6. 最終的な構造とデータが既にある元のデータベースを元に戻す
  7. 移行ファイルをコミットする

「適切な」SQL サーバーを使用する場合は、本番環境と開発環境の 2 つのデータベースだけを保持してください。手順 3 で名前を変更するのではなく、運用データベースを指すようにプロジェクト設定を変更します。また、手順 4 は省略できます。

于 2015-09-14T13:40:20.303 に答える