为现有数据库创建一个非空的空字段是否安全?

时间:2017-12-08 22:00:55

标签: django database database-design django-models database-schema

嗨,我正在尝试改变我目前的django项目架构,数据迁移工具是南方的。 django版本是1.6.9。

这是一个现有的数据库,所以我不想搞砸我的历史数据。

我想要改变的是使一个空白=真正的字段非空(空白=假) 这是我的模特课:

class Post(DraftableModel, EditTrackingModel):
    title = models.CharField(max_length=120,
                             verbose_name='headline')

    description = models.CharField(max_length=260,
                                   blank=True,
                                   verbose_name='lead-in',
                                   help_text="260 character limit")
    /*rest of the code*/

我想将描述从models.CharField(blank=True)更改为models.CharField(blank=False),这是默认的空白值 考虑到我的数据库的存在,我的一些旧Post模型确实有空描述。 迁移和更改数据库架构后,我的数据库是否会损坏?

1 个答案:

答案 0 :(得分:1)

当您尝试迁移时,django会警告您这些空字段。所以你几乎没有选择。

  • 您可以在模型中添加默认值,例如default="Some Default Value",django会为迁移时的所有空字段选择默认值。

  • 您可以发送迁移请求,在终端上,django会要求您添加一个一次性值以添加到所有空字段中。

  • 此外,您可以编辑迁移文件,并根据您考虑的条件为这些空字段添加不同的值。

  • 您可以编写一个函数来检查退出行的所有空字段,并根据某些条件添加一些数据。

我强烈建议先备份。无论变化有多小或编码有多好。