1

私にはいくつかのクラスがあります、例えばBand、、。それぞれにフィールド(代わりに呼ばれることもあります)と、その他のクラス固有のフィールドがあります。AlbumSongtitlenameslug

それらを共通の基本クラスの子に変換するためにSouthを使用したいと思います。Articleこれには、すべてのオブジェクトとが含まれtitleますslug。ただし、私の場合、Southのデータ移行がどのように機能するかはわかりません。手伝ってくれますか?

4

1 に答える 1

2

Southがモデルに加える変更について考え、計画する必要があります。

Articleが抽象クラスの場合、Southはほとんどの場合それを無視します。つまり、すべてのフィールドは、モデル上で直接フィールドであるかのように見えます。これは、現在のフィールドとほぼ同じです。したがって、発生する唯一の変更は、1つのモデルがname以前使用していた場所であり、新しいtitleフィールドも含まれるようになります。このため、nameschemamigrationを介してフィールドをアタッチしたままにし、データマイグレーションを作成してその値を新しいtitleフィールドに移動し、最後に別のスキーママイグレーションで削除する必要があります。

Article標準の基本クラス(複数テーブルの継承)の場合、すべてのモデルが新しいOneToOneFieldArticleを取得します。繰り返しになりますが、スキーマ移行を通じてすべてのフィールドをモデルにそのまま残し、データ移行を作成してそれぞれを実行し、モデルの古いデータを使用してインスタンスを作成し、そのインスタンスを1対1のフィールドにArticle割り当てます。Article次に、別のスキーマ移行で古いフィールドを削除できます。

于 2012-05-24T17:03:00.040 に答える