【问题标题】:Is it safe to make a empty field non-empty for a existing database?将现有数据库的空字段设为非空是否安全?
【发布时间】:2018-05-23 04:44:17
【问题描述】:

嗨,我正在尝试更改我当前的 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 模型确实有空的描述。 迁移和更改数据库架构后,我的数据库会损坏吗?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    • 您还可以编辑迁移文件并根据您想到的条件为这些空字段添加不同的值。

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

    另外我强烈建议先进行备份。无论更改有多小或您的编码水平如何。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多