Django 自动为现有数据库表创建主键
Django automatically create primary keys for existing database tables
我有一个现有的数据库,我正在尝试使用 Django 访问它。我使用 python manage.py inspectdb
为数据库创建模型。目前我能够将模型导入 python shell,但是当我尝试以任何方式访问任何实际对象时,我收到此错误 OperationalError: (1054, "Unknown column 'some_table.id' in 'field list'")
。我看到数据库中的 table 实际上没有 id 字段。我怎样才能解决这个问题?我是否需要更新 Meta class 和 运行 迁移中的 managed 字段,以便它可以创建此字段自动?
来自 Django 文档:此功能是一种快捷方式,而不是最终模型生成。有关详细信息,请参阅 inspectdb 的文档。 (参考:https://docs.djangoproject.com/en/1.8/howto/legacy-databases/)
您将需要手动清理模型并进行迁移。您必须添加的用于添加 "id" 字段的行是:
id = models.IntegerField(primary_key=True)
警告:我肯定会创建一个数据库的副本来玩弄,而不是原始的。这可能需要您反复试验才能正确。在你完全确定你做对了之后,你可以改变Managed=True
,但是要非常小心!
我有一个现有的数据库,我正在尝试使用 Django 访问它。我使用 python manage.py inspectdb
为数据库创建模型。目前我能够将模型导入 python shell,但是当我尝试以任何方式访问任何实际对象时,我收到此错误 OperationalError: (1054, "Unknown column 'some_table.id' in 'field list'")
。我看到数据库中的 table 实际上没有 id 字段。我怎样才能解决这个问题?我是否需要更新 Meta class 和 运行 迁移中的 managed 字段,以便它可以创建此字段自动?
来自 Django 文档:此功能是一种快捷方式,而不是最终模型生成。有关详细信息,请参阅 inspectdb 的文档。 (参考:https://docs.djangoproject.com/en/1.8/howto/legacy-databases/)
您将需要手动清理模型并进行迁移。您必须添加的用于添加 "id" 字段的行是:
id = models.IntegerField(primary_key=True)
警告:我肯定会创建一个数据库的副本来玩弄,而不是原始的。这可能需要您反复试验才能正确。在你完全确定你做对了之后,你可以改变Managed=True
,但是要非常小心!