Django自动为现有数据库表创建主键

时间:2015-06-01 23:39:25

标签: python mysql django legacy-database

我有一个现有的数据库,我试图用Django访问。我使用python manage.py inspectdb为数据库创建模型。目前我能够将模型导入到python shell中,但是当我尝试以任何方式访问任何实际对象时,我收到此错误OperationalError: (1054, "Unknown column 'some_table.id' in 'field list'")。我看到数据库中的表实际上没有 id 字段。我怎样才能解决这个问题?我是否需要更新 Meta 类中的托管字段并运行迁移,以便它可以自动创建此字段?

1 个答案:

答案 0 :(得分:4)

来自Django文档:此功能用作快捷方式,而不是确定的模型生成。有关更多信息,请参阅inspectdb的文档。 (参考:https://docs.djangoproject.com/en/1.8/howto/legacy-databases/

您需要手动清理模型并进行迁移。您必须添加的行才能添加" id"领域是:

id = models.IntegerField(primary_key=True)

警告:我肯定会创建一个数据库的副本来玩,而不是原始的。这可能会带你一些试验和错误来做对。在您确定自己做对了之后,您可以更改Managed=True,但非常小心!