0

私たちは皆、django での南部への移行が大好きです。通常、最初に使用convert_to_southしてからモデル クラスを変更し、次に実行schemamigrationして実行します。migrate

次のシナリオが誰かに起こったかどうかはわかりません。プロジェクトはバージョン管理下で追跡されていません (git stash はすばらしいでしょう)。モデル クラスを大幅に変更し、元に戻す/やり直しの履歴を失いました。まだ南に変換されていません。これを修正するコマンドはありますか?

4

1 に答える 1

1

ここに 1 つのアイデアがあります。最初に、FK の検出がサポートされているデータベースなど、ここにあるすべての免責事項をお読みください。

https://docs.djangoproject.com/en/dev/ref/django-admin/#django-admin-inspectdb

更新: 本当の答えは、下の 2 つのアイデアを組み合わせて使用​​することです。基本的に、 inspectdb は、モデルとデータベースの違いを理解するための、人間が読める優れた方法です。次に、一致するようにテーブルの変更ステートメントを手動で作成します。幸いなことにsqlall、create ステートメントが出力されるため、そのほとんどは新しいフィールド用にカット アンド ペーストされます。

すべてのバックアップを作成します。

  1. models.py をどこかにコピーします。
  2. 入力してくださいpython manage.py inspectdb
  3. 探しているモデルを見つけて、元の models.py に貼り付けます。
  4. 南に設定します。
  5. 新しい/更新されたmodels.pyをmodels.pyに貼り付けます
  6. schemamigration を実行してから移行します。

移行を手動で行ってから南に変換することもできます。

  1. python manage.py dbshell
  2. テーブルの説明 (データベースによって異なります)
  3. 欠落している行を見つけます...必要に応じて、alter table ステートメントを使用します。(SQL ヒントはpython manage.py sqlall <myapp>
于 2013-06-05T23:05:56.823 に答える