May*_*aya 9 python mysql django
将项目从 Django 2.2 更新到 Django 3.2 后,我遇到了问题。
在 Django 2.2 中,主键是使用AutoField
MySql 中的含义创建的,它们被考虑int(11)
,并且该表中的所有外键也必须是int(11)
.
在 Django 3.2 中,现在创建主键,BigAutoField
在 MySql 中创建 type bigint(20)
。因此,我无法与旧表创建任何外键关系。
根据文档,可以使用以下方法在设置中更改:
DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
Run Code Online (Sandbox Code Playgroud)
这在创建主键时有效,int(11)
但是,仍然创建外键字段,这bigint(20)
意味着无法创建关系,因为它们必须具有相同的类型。
这里说您可以将所有现有表更改为,BigAutoField
但这也不会处理外键关系。
有什么方法可以轻松地将所有主键及其关系更改为不同类型吗?我是否在 Django 文档中遗漏了一些内容,其中它们还提供了相关键和主键的兼容性?
BigAutoField
如果 Django 的所有未来版本现在都使用它作为默认值,我显然更愿意更改所有现有数据。