在新字段中添加了错误的默认值,现在无法迁移

时间:2017-03-31 06:08:32

标签: django django-models django-migrations

我在我的一个模型中添加了一个用户外部字段并进行了迁移。我被提示添加默认值。 user的默认值假设为Int,表示user_id。我没有添加Int,而是添加了一个字符串“username”。

现在我坚持:

return int(value)
ValueError: invalid literal for int() with base 10: 'testuser'

我删除了与模型关联的所有对象,并尝试迁移,但是没有用,导致出现相同的错误。 (Model.objects.all().delete()

我恢复了以前的迁移,但没有解决问题,当我迁移时,它得到了相同的ValueError。 (./manage.py migrate app 0037_auto_20170330_0326

最后,我删除了我的新外国字段,但这也没有解决问题。

在这种情况下,我还有哪些其他选择?

我的模型非常简单:

class Chat(models.Model):
    user = models.ForeignKey(User) #new field that was added
    message = models.CharField(max_length=50)

1 个答案:

答案 0 :(得分:3)

如果您已经在迁移0036,请尝试以下步骤:

  1. 删除迁移0037_auto_20170330_0326。它将出现在以下位置:

    appfolder -> migrations -> 0037_auto_20170330_0326.py
    
  2. null=True模型的user字段中设置Chat

    user = models.ForeignKey(User, null=True)
    
  3. 再次迁移!