在已删除的非空字段上还原迁移

时间:2017-08-15 13:30:36

标签: django database-migration

我已经删除了一个非空字段的模型:

class Spam(models.Model):
    slug = models.SlugField(allow_unicode=True)  # deleted

在我进行迁移并应用它们之后,我想恢复它们。 但显然,这会导致

django.db.utils.IntegrityError: NOT NULL constraint failed: eggs_spam.slug

如何恢复迁移?

2 个答案:

答案 0 :(得分:1)

这很棘手。我能想到的唯一解决方案如下:

1:首先,创建一个允许slug字段可以为空的迁移

2:然后,创建另一个将为每一行填充字段的迁移

3:最后,创建一个使该字段不可为空的迁移。

希望有所帮助

答案 1 :(得分:1)

有一种更简单的方法:

  1. 查找最初添加slug字段的迁移
  2. 向slug字段添加默认值
  3. 取消应用上次迁移
  4. 从初始段塞字段迁移中删除默认值