当您为非空字段迁移字段名称更改时,South会删除字段值

时间:2015-02-24 02:58:44

标签: python django-south

我记得在某个地方读过你不应该在模型中使用null = True设置TextField或CharField,你应该只有空白= True。我最近有一个名为Reciept的字段,拼写错误给我带来了麻烦,因此我将值更改为Receipt。这是一个FileField,因为这只是mysql中的varchar字段,我最初设置为blank = True但不是null = True。当我为South进行拼写更改和架构迁移时,South抱怨

? The field receipt does not have a default specified, yet is NOT NULL.
? Since you are removing 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
?  3. Disable the backwards migration by raising an exception.
? Please select a choice: 

我选择了2,并输入''作为默认的一个off值,认为如果South遇到反向迁移时具有空值的任何字段,则会将其设置为空字符串。相反,它删除了所有字段值,而不是前向更改。

我在这里缺少什么。我希望南方保留所有旧数据。如何让South为定义为非空的字段携带数据?如果我在SQL中进行了此更改,则重命名将是一个单行程序。南方也不应该这么简单吗?

0 个答案:

没有答案