私にはいくつかのクラスがあります、例えばBand
、、。それぞれにフィールド(代わりに呼ばれることもあります)と、その他のクラス固有のフィールドがあります。Album
Song
title
name
slug
それらを共通の基本クラスの子に変換するためにSouthを使用したいと思います。Article
これには、すべてのオブジェクトとが含まれtitle
ますslug
。ただし、私の場合、Southのデータ移行がどのように機能するかはわかりません。手伝ってくれますか?
私にはいくつかのクラスがあります、例えばBand
、、。それぞれにフィールド(代わりに呼ばれることもあります)と、その他のクラス固有のフィールドがあります。Album
Song
title
name
slug
それらを共通の基本クラスの子に変換するためにSouthを使用したいと思います。Article
これには、すべてのオブジェクトとが含まれtitle
ますslug
。ただし、私の場合、Southのデータ移行がどのように機能するかはわかりません。手伝ってくれますか?
Southがモデルに加える変更について考え、計画する必要があります。
Article
が抽象クラスの場合、Southはほとんどの場合それを無視します。つまり、すべてのフィールドは、モデル上で直接フィールドであるかのように見えます。これは、現在のフィールドとほぼ同じです。したがって、発生する唯一の変更は、1つのモデルがname
以前使用していた場所であり、新しいtitle
フィールドも含まれるようになります。このため、name
schemamigrationを介してフィールドをアタッチしたままにし、データマイグレーションを作成してその値を新しいtitle
フィールドに移動し、最後に別のスキーママイグレーションで削除する必要があります。
がArticle
標準の基本クラス(複数テーブルの継承)の場合、すべてのモデルが新しいOneToOneField
Articleを取得します。繰り返しになりますが、スキーマ移行を通じてすべてのフィールドをモデルにそのまま残し、データ移行を作成してそれぞれを実行し、モデルの古いデータを使用してインスタンスを作成し、そのインスタンスを1対1のフィールドにArticle
割り当てます。Article
次に、別のスキーマ移行で古いフィールドを削除できます。