モデルにいくつかの変更を加えた後(たとえば、モデルの新しいフィールドと新しいモデル)、これらの変更を入力済みデータベースに反映するための最良の方法は何ですか?
PS:評価された1つの場所で多くのソリューションを見たかったのです。どうやらもっと多くの解決策がすでにリストされています ここ 。
私は同様の質問をしました ここ そしてかなりの数の答えを得ました。
SQLを使用して手動でダンプとリロードを行う、フィクスチャを使用する、Djangoの「新しい」スキーマ進化パッケージの1つを使用するなど、これを行う方法は非常にたくさんあります。
もう1つの手法は、dumpdata引数とloaddata引数を使用してmanage.pyを実行し、その間にデータベースを強制終了することです。
python manage.py dumpdata > dump.json
python manage.py loaddata dump.json
詳細については、 manage.py docs を参照してください。
Djangoには独自の移行が組み込まれており、次の場所に文書化されています。
変更の範囲によって異なります。それがALTERを超えている場合、あなたは大手術を行っています。モデルとデータベースのバックアップを作成して、元に戻せるようにします。
私の好みは、新しい(改訂、修正、拡張された)モデルを新しいアプリケーションとして配置することです。 URLなどはなく、モデルだけです。
古いモデルからデータを取り出したら、希望する新しい形式でDBを再構築できます。
Manage.py sqlallで新しい列のパラメーターを確認し、Alterテーブルステートメントを使用してデータベースに手動で追加します。このようにして、データベースをやり直す必要はありません。ただし、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
次に、ファイルをデータベースに移行します。