モデルにいくつかの変更を加えた後 (モデルの新しいフィールドや新しいモデルなど)、これらの変更を入力済みのデータベースに反映する最良の方法は何ですか?
PS: 評価された 1 つの場所で多くのソリューションを見たいと思っていました。どうやら、より多くのソリューションがすでにここにリストされています。
モデルにいくつかの変更を加えた後 (モデルの新しいフィールドや新しいモデルなど)、これらの変更を入力済みのデータベースに反映する最良の方法は何ですか?
PS: 評価された 1 つの場所で多くのソリューションを見たいと思っていました。どうやら、より多くのソリューションがすでにここにリストされています。
もう 1 つのテクニックは、manage.py に dumpdata および loaddata 引数を使用し、その間にデータベースを強制終了することです。
python manage.py dumpdata > dump.json
python manage.py loaddata dump.json
詳細については、manage.py ドキュメントを参照してください。
ここで同様の質問をしたところ、かなりの数の回答が得られました。
SQL を使用して手動でダンプとリロードを行う、フィクスチャを使用する、または Django 用の「新しい」スキーマ進化パッケージの 1 つを使用するなど、非常に多くの方法があります。
変更の範囲によって異なります。ALTER を超えている場合は、大手術を行っています。戻ることができるように、モデルとデータベースのバックアップを作成します。
私の好みは、新しい (改訂、修正、拡張された) モデルを新しいアプリケーションとして入れることです。URL などはなく、モデルだけです。
古いモデルからデータを取り出したら、優先する新しい形式で DB を再構築できます。
Django には独自の組み込みの移行機能が追加されました。ドキュメントは次のとおりです。
manage.py sqlall で新しい列のパラメーターを確認し、Alter table ステートメントを使用して手動でデータベースに追加します。この方法では、データベースをやり直す必要はありません。ただし、SQLの知識が必要です...
こちらをご覧ください(「データベース スキーマの変更」まで下にスクロールします)。
Perform these steps in order may help you
:
For more details,
ここをクリック: http://south.readthedocs.org/en/latest/
1)python manage.py schemamigration apps.appname --initial
上記の手順では、デフォルトとして移行フォルダーが作成されます。
2)python manage.py migrate apps.appname --fake
偽の移行を生成します。
3)python manage.py schemamigration apps.appname --auto
次に、必要に応じてフィールドを追加し、上記のコマンドを実行できます。
4)python manage.py migrate apps.appname
次に、ファイルをデータベースに移行します。