在已删除的非空字段上恢复迁移

Jor*_*ren 9 django database-migration

我有一个带有非空字段的模型,我删除了它:

class Spam(models.Model):
    slug = models.SlugField(allow_unicode=True)  # deleted
Run Code Online (Sandbox Code Playgroud)

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

django.db.utils.IntegrityError: NOT NULL constraint failed: eggs_spam.slug
Run Code Online (Sandbox Code Playgroud)

如何恢复迁移?

小智 11

有一个更简单的方法:

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


Jah*_*nov 6

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

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

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

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

希望能帮助到你