Django開発--migration二三事

1317 ワード

Django開発---データ追加前にmigrationを忘れることについて
前因:
データベースに空のテーブルがあり、モデルクラスにフィールドを追加し、データの移行を行った後、データをインポートする必要があります.私の脳はダウンタイムで、直接データの導入を行いました.
結果:
インポートするデータファイルは、データベース内の空のテーブルを上書きし、データテーブルにmigrationを行うフィールドが多く出没することを直接招く、データ移行が行われていないため、移行ファイルが生成されない.したがって、データベース移行テーブルには今回の移行レコードがありません.
解決:
Plan A:ライブラリを削除します.元のデータベースファイルを持っていることを前提に、後でデータのインポートを再開することができます.削除命令を実行する(ちょっと興奮したかな~)
     drop database      ;

        3.プロジェクトのmigrationモジュールから削除_init__.pyファイル外のすべてのファイル4.データ移行のための新しいデータベースの作成
    python manage.py makemigrations 
    python manage.py migrate

        5.データインポート、すべてOK
Plan B:ライブラリを削除しないで、道を走らないでまず私たちの主要な矛盾をつかんで、移転の記録がありません.では、ライブラリを削除することなく、私たちの移行記録を移行テーブルに保存できるのは完璧ではないでしょうか.データ・テーブルのデータのインポート先として表示されるフィールドの削除
     alter table    drop column    ; //    

        2.データ移行を行い、特定のappへの移行を推奨する.注意:移行コマンド呼び出しはデフォルトでグローバルです.つまり、最新の変更のモデルまたは移行ファイルをすべて操作します.一部のappを操作したい場合は、その後にapp name(あなたのアプリケーション名)を追加します.
	  python manage.py makemigrations appname
	  python manage.py migrate appname

        3.データインポートは、ライブラリを削除することなく、移行レコードをどのように生成するかという問題を完璧に解決します.
ps:以上は私のいくつかの浅い理解にすぎません.完全に目の前のバグを解決するためです.現在、プロジェクトはまだこの操作による他の問題が発生していません.間違いがあれば、指摘してください.お役に立てば幸甚に存じます