管理界面中的Django,South和IntegrityError

时间:2014-01-31 21:22:25

标签: django django-south

我有一个定义了自己的主键的模型。我删除了这个主键,South然后在schemamigration / migrate中正确添加了默认的Django“id”键。

当尝试创建模型的实例时(通过管理界面或其他方式),我得到:

NOT NULL constraint failed: app_myModel.id

迁移中的转发方法说:

db.add_column(u'app_myModel', u'id',
                  self.gf('django.db.models.fields.AutoField')(default=1, primary_key=True),
                  keep_default=False)

但架构(sqlite3)是:

 "id" integer NOT NULL);

对我来说,这看起来不像是AUTOINCREMENT字段。不确定如何通过迁移来恢复这一点,并且如果它发生在那里,我真的不想要任何我在生产中无法做到的事情。

发生了什么事?有什么问题?

提前致谢。

1 个答案:

答案 0 :(得分:1)

似乎它一定是南方的一个错误,为了修复它,我做了以下几点:

  • 回到0004,问题是0006
  • 已删除0006
  • Ran ./manage schemamigration app --auto --update ,更新0005
  • 迁移至0005

该表是用0005制作的,不知道这是否有意义。您可能需要向后迁移到创建表的迁移,然后更新该迁移,以便它可以正确检测架构。引用South的主要作者Andrew Godwin,讨论南方的主键:

  

......代码库让几个成年人感动得流泪

作者似乎意识到了这些问题。