我可以更改模型字段的类型吗?
假设我有一个模型,其中有一个字段:
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)
你可能还想在另一个迁移中把空值改成空字符串('')。