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

标签 python mysql django legacy-database

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

最佳答案

来自 Django 文档:此功能是一种快捷方式,而不是最终模型生成。有关详细信息,请参阅 inspectdb 的文档。 (引用:https://docs.djangoproject.com/en/1.8/howto/legacy-databases/)

您将需要手动清理模型并进行迁移。您必须添加的用于添加“id”字段的行是:

id = models.IntegerField(primary_key=True)

警告:我肯定会创建一个数据库的副本来玩弄,而不是原始的。这可能需要您反复试验才能正确。在你完全确定你做对了之后,你可以更改 Managed=True,但要非常小心!

关于python - Django 自动为现有数据库表创建主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30585074/

相关文章:

python - 根据交集在列表中查找最佳超集

python,pandas 进行分组 value_count()

python - 解析表中的文本不起作用

python - 如何让 Python 的 multiprocessing Queue 的 .empty() 方法返回正确的值?还是替代品?

php - 何时禁用按键

python - django 日期范围从今天到 10 天前

PHP session 在屏幕之间不持久

php - 如何在 while 循环中描述订单日期字段

python - __init__.py 的目的。或者 : Why put code in __init__. py 而不是模块?

python - Django 上传文件验证导致 "InMemoryUploadedFile is not supported"