首页 文章

管理界面中的Django,South和IntegrityError

提问于
浏览
1

我有一个模型定义了自己的主键 . 我删除了这个主键,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 回答

  • 1

    看起来它一定是南方的一个错误,修复它,我做了以下几点:

    • 回到0004,问题出在0006

    • 已删除0006

    • Ran ./manage schemamigration app --auto --update,更新0005

    • 迁移到0005

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

    ...这个代码库已经让几个成年人流下了眼泪

    看来作者已经意识到了这些问题 .

相关问题