Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用OneTONE键进行南方数据迁移_Python_Database_Django_Django South - Fatal编程技术网

Python 使用OneTONE键进行南方数据迁移

Python 使用OneTONE键进行南方数据迁移,python,database,django,django-south,Python,Database,Django,Django South,我正在使用South进行sqlite3数据迁移。我的旧架构具有以下UserProfile模型: class UserProfile(models.Model): user = models.OneToOneField(User) weekOne = models.OneToOneField(WeekOne) weekTwo = models.OneToOneField(WeekTwo) weekThree = models.OneToOneField(WeekTh

我正在使用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等。每周本身就是一个模型,继承自一般的周模型。因此,一周模型的基本原型如下所示:

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
我的问题是,我应该在我的数据迁移代码中加入什么样的代码,这样我就可以用额外的时间填充旧的用户配置文件。我有这样的想法:

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

在终端运行这个

 python manage.py schemamigration myapp --auto
然后


如果我的应用程序已经创建了没有新键的模型,则此操作不起作用。也就是说,我创建了一个以第1-3周为密钥的用户,用这些密钥和该用户做了大量工作,然后添加了第4-9周。我的所有新用户都将拥有所有的周数,但是老用户在第4-9周将拥有null,并且密钥不是null密钥,因此这会导致错误。
 python manage.py migrate