尝试迁移应用程序时,南模式迁移要求“一次性值”

时间:2013-09-13 01:44:49

标签: django models django-south

好的,所以我有一个应用程序,我想将它转换为南(如果这是正确的术语)。我想这样做,因为我有一个模型,我做了

python manage.py syncdb

然后我对模型进行了更改,然后它没有让我同步syncdb。在做了一些改变后,我发现使用南方是解决方案。所以我把我的安装应用程序放在南方,然后我做了

python manage.py syncdb

并向南安装。然后,按照www.djangopro.com/2011/01/django-database-migration-tool-south-explained/上的说明,我做了

manage.py convert_to_south myapp 

为第1代创建迁移文件,并创建有效的migrationhistory条目。接下来,我做了

manage.py schemamigration myapp --auto

它说

 ? The field 'Users.date_of_birth' does not have a default specified, yet is NOT NULL.
 ? Since you are adding this field, you MUST specify a default
 ? value to use for existing rows. Would you like to:
 ?  1. Quit now, and add a default to the field in models.py
 ?  2. Specify a one-off value to use for existing columns now
 ? Please select a choice: 2
 ? Please enter Python code for your one-off default value.
 ? The datetime module is available, so you can do e.g. datetime.date.today()
 >>> 

这是什么意思?难道我做错了什么?我应该为开关默认值设置什么值?

当我查看本网站时:south.readthedocs.org/en/latest/tutorial/part3.html, 我看到当他们使用schemamigration --auto并在名为southtut的app上迁移时,它并没有在开头要求一次性默认值,所以我猜我做错了。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

一切都不错。您有Users.date_of_birth字段,该字段没有在模型中指定的默认值,例如default=datetime.now(),这就是为什么要求为旧条目指定迁移的默认值。

在第二步之后说:

The datetime module is available, so you can do e.g. datetime.date.today()

只需执行datetime.date.today()并按Enter或选择date_of_birth字段的任何默认日期。