5

Django Docsでは、この例を使用して複数テーブルの継承を示しています。

from django.db import models

class Place(models.Model):
    name = models.CharField(max_length=50)
    address = models.CharField(max_length=80)

class Restaurant(Place):
    serves_hot_dogs = models.BooleanField(default=False)
    serves_pizza = models.BooleanField(default=False)

最初に Restaurant クラスを次のように作成したとします。

class Restaurant(models.Model):
    name = models.CharField(max_length=50)
    address = models.CharField(max_length=80)
    serves_hot_dogs = models.BooleanField(default=False)
    serves_pizza = models.BooleanField(default=False)

そして、たくさんの Restaurant オブジェクトが既に作成された後、MTI を使用する方が良いことに気付きました。事後に親 Place クラスを作成してデータを移行する良い方法はありますか?

4

2 に答える 2

3
  1. 新しいモデルを追加しますが、古いモデルも保持します。移行を行います。

  2. モデルからモデルにデータをコピーするカスタム マイグレーションを記述します。RestaurantNewRestaurant

  3. 必要に応じて、他のモデルの外部キー フィールドを から に変更し、Restaurant移行を行いNewRestaurantます。

  4. Restaurant必要に応じて、クラスを使用するためにクラスが使用されているアプリ内のすべての場所を変更しますNewRestaurant

  5. 古いレストラン モデルを削除し、移行を行います

  6. Restaurantすべてが新しい構造で再び機能するように、新しいレストラン モデルの名前を に変更します。移行を行います。

于 2016-05-04T14:23:32.523 に答える