【发布时间】:2017-03-31 06:08:31
【问题描述】:
我在我的一个模型中添加了一个用户外部字段并进行了迁移。系统提示我添加默认值。 user 的默认值假设为 Int,表示 user_id。我没有添加一个 Int,而是添加了一个字符串“用户名”。
现在我被困住了:
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)
【问题讨论】:
-
用户名值或此用户字段是否仍保留在数据库的 Chat 表中?
-
@AKS 不,它没有,这就是我感到困惑的原因。
>>> a = Chat.objects.all().count() >>> a 0 >>> -
如果您已经在迁移 0036,请尝试以下步骤:(1)删除迁移 0037,(2)在聊天模型的用户字段中设置
null=True,(3)进行迁移并尝试再次迁移。 -
@AKS 我会试一试并尽快回复您。谢谢。
-
@AKS 我删除了迁移迁移并且它有效,谢谢。留下它作为答案,我会接受。注意 - 我花了一点时间才弄清楚你是从(appfolder -> 迁移)而不是 shell 中删除迁移。
标签: django django-models django-migrations