【发布时间】:2016-08-26 16:57:25
【问题描述】:
这是我目前的状态:
mainapp
[X] 0001_initial
[X] 0002_authorprofile_uuid
[X] 0003_auto_20151107_1243
[X] 0004_article_approved
[X] 0005_auto_20151129_0950
[X] 0006_article_category
[X] 0007_auto_20160501_1601
我想回到 0005。但是,当我运行 /manage.py migrate mainapp 0005_auto_20151129_0950 时,我收到错误 ValueError: The database backend does not accept 0 as a value for AutoField.
这是我在 models.py 中修复的错误,所以我想回到 0005 重新开始,然后重新进行迁移。
class Article(models.Model):
category = models.ForeignKey(Category, default = 1) #trying to add this and set default value. It was first set to 0 but changed it to 1 after it failed
【问题讨论】:
-
对不起,现在我对真正的问题有了更好的理解。将字段从 Auto 更改为 ForeignKey 后,您似乎最终在该字段中插入了 0。例如,如果您尝试插入零,Mysql 不允许在自动字段中使用 0,它会插入下一个自动增量值。所以问题不在于代码,而在于数据,或者在我看来就是这样。
-
@e4c5 基本上 0007 认为该字段在数据库中,但实际上不是。那里没有专栏。因此,如果我更改默认值,则无法更改,因为该列不存在。如果我尝试删除该字段,它不能因为它不存在
-
@e4c5 如果我只是通过 SQL 命令添加一列然后迁移到删除它会怎样?然后下降将起作用。
标签: django django-migrations django-1.9