在迁移非空字段的字段名更改时,South会删除字段值

2024-06-08 04:08:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我记得在某个地方读过这样一篇文章:在模型中,不应该将TextField或CharField设置为null=True,而应该设置为blank=True。我最近有一个名为Receipt的字段,拼写错误困扰了我,所以我将值改为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,并输入“”作为默认的一次性值,认为如果South在反向迁移时遇到任何具有空值的字段,它会将其设置为空字符串。相反,它删除了所有字段值,而将“”放在向前更改中

我错过了什么。?我希望南方能保留所有的旧数据。如何让South为定义为非空的字段传递数据?如果我在SQL中做了这个更改,那么重命名将是一行代码。这在南方难道不简单吗


Tags: thetoyoutruedefaultfieldforvalue

热门问题