You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django主键(id)自动插入失效为null的问题求助

Django主键id自动插入失败问题解决

可能原因及对应方案

1. 未执行保存操作

你在shell中仅实例化了对象,但没有调用save()方法将其写入数据库,此时对象只存在于内存中,并未生成数据库记录,因此id会显示为null。修正方式:

test = Camera(status=False,location='b1',liveURL='http://test.com')
test.save()  # 执行此步骤将对象存入数据库
print(test.id)  # 此时可查看自动生成的id值

2. 数据库表结构未正确配置自增主键

若删除旧迁移文件和记录后未完整重建数据库,可能导致id字段未被设置为自增主键。按以下步骤重新初始化:

  • 删除对应app下migrations文件夹中除__init__.py外的所有文件
  • 删除项目根目录的数据库文件(如db.sqlite3)
  • 依次执行命令:
    python manage.py makemigrations
    python manage.py migrate
    

3. 显式指定主键字段

若默认配置未生效,可在模型中直接定义自增主键:

class Camera(models.Model):
    id = models.AutoField(primary_key=True)  # 显式声明自增主键
    status = models.BooleanField(default=True)
    location = models.CharField(max_length=2)
    liveURL = models.URLField(max_length=200)

添加后重新执行makemigrations和migrate命令。

内容的提问来源于stack exchange,提问作者Stanley Lim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 13:30:42