Southを使用してsqlite3データ移行を行っています。私の古いスキーマには、UserProfile の次のモデルがあります。
class UserProfile(models.Model):
user = models.OneToOneField(User)
weekOne = models.OneToOneField(WeekOne)
weekTwo = models.OneToOneField(WeekTwo)
weekThree = models.OneToOneField(WeekThree)
しかし、新しい週、つまり、weekFour、weekFive、weekSix などをいくつか追加したような気がします。毎週自体がモデルであり、一般的な Week モデルから継承されています。したがって、Week モデルの基本的なプロトタイプは次のようになります。
class WeekOne(Week):
name = u'Week One'
exercises = ['squats', 'lunges', 'stairDaysCount', 'skipStairs']
# Required benchmarks for given exercises
squatBenchmark = 1000
lungeBenchmark = 250
stairDaysCountBenchmark = 3
totalGoals = 4
UserProfile
私の質問は、古いs に追加の週を入力できるように、データ移行コードにどのようなコードを入れるべきかということです。私は次のようなことを念頭に置いていました:
def forwards(self, orm):
for user in orm.UserProfile.objects.all():
user.weekFour = orm.WeekFour()
user.weekFive = orm.weekFive()
# etc.
しかし、それは機能していないようです。スキーマの移行を実行しようとすると、次のエラーが発生します。
Migration 'my_app:0002_newWeeks' is marked for no-dry-run
そして後でこれ:
DatabaseError: no such column: my_app_userprofile.weekFour_id