don*_*ior 7 mysql django django-models python-3.x
我有一个现有的 MySQL 数据库,其中有几个表已经填充了数据。我创建并配置了一个带有应用程序的 Django 项目。Django 和数据库之间的通信按预期工作。我使用“inspectdb”命令生成了一个“models.py”来创建我的所有应用程序模型:
python manage.py inspectdb > myapp/models.py
Run Code Online (Sandbox Code Playgroud)
我的问题是我的模型都没有在“models.py”中显示任何“id”字段。所有现有的 MySQL 表都以“id”列作为主键(为这些表启用了自动增量),这看起来很奇怪。
我想知道是否需要在使用 inspectdb 创建的所有模型类中显式添加“id”主键字段,或者是否不需要(在这种情况下它是隐式的)。
为什么 Django 模型定义中缺少“id”主键,我应该将此字段添加到模型类中吗?
当前设置
为什么
'id'Django 模型定义中缺少主键,我应该将此字段添加到模型类中吗?
没有。如果您没有在模型中指定主键。Django 会自动将一个AutoField名为 的模型添加到您的模型中id,如关于自动主键字段的文档中所述:
默认情况下,Django 为每个模型提供以下字段:
Run Code Online (Sandbox Code Playgroud)id = models.AutoField(primary_key=True)这是一个自动递增的主键。
如果您想指定自定义主键,请
primary_key=True在您的字段之一上指定 。如果 Django 发现您已明确设置Field.primary_key,则不会添加自动id列。
| 归档时间: |
|
| 查看次数: |
1243 次 |
| 最近记录: |