我可以更改模型字段的类型吗?

1 投票
1 回答
901 浏览
提问于 2025-04-18 15:09

假设我有一个模型,其中有一个字段:

is_retired = models.NullBooleanField()

这个字段在数据库中的任何记录里都没有被设置过,所以我认为所有记录在这个字段上都会是空值(null)。

现在我想把这个字段改成字符串类型:

is_retired = models.CharField(max_length=50)  

我正在使用Django 1.7,并运行了 makemigrations,看起来一切正常,系统说有字段被修改了。不过,当我实际运行 migrate 命令时,它失败了,出现了

django.db.utils.IntegrityError: column "is_retired" contains null values

我该怎么解决这个问题呢?

1 个回答

3

如果你想允许空值或者空字符串,可以把它改成:

is_retired = models.CharField(max_length=50, null=True, blank=True)

你可能还想在另一个迁移中把空值改成空字符串('')。

撰写回答