1

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
4

1 に答える 1

0

これをターミナルで実行するだけです

 python manage.py schemamigration myapp --auto

それで

 python manage.py migrate
于 2013-03-28T01:57:53.203 に答える