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

Django迁移报错:‘id’字段默认值无效,未定义id字段

Django迁移报错:Invalid default value for 'id' 解决方法

问题分析

你遇到的Invalid default value for 'id'错误,是因为Django默认会为每个模型自动生成名为id的自增主键字段,但数据库表结构或迁移文件出现异常,导致该字段的默认值设置不符合要求。你的字典里没定义id是正常的,因为这个字段由Django自动维护。

解决方案

  • 清理并重新生成迁移文件

    1. 删除对应app下migrations/目录中除__init__.py外的所有迁移文件
    2. 执行命令重新生成迁移:python manage.py makemigrations
    3. 再次执行迁移:python manage.py migrate
  • 修复数据库表结构
    如果数据库中已存在Product表,可能是之前手动修改过表结构导致id字段属性异常。直接删除该表后,重新执行迁移命令即可。

  • 显式定义主键字段
    在Product模型中手动指定自增主键,避免Django自动生成时出现异常:

    from django.db import models
    
    class Product(models.Model):
        id = models.AutoField(primary_key=True)  # 显式定义自增主键
        code = models.SlugField(max_length=70, unique=True)
        designation = models.CharField(max_length=255)
    
        def __str__(self):
            return self.code  # 修复原__str__方法错误,原代码中self.article不存在
    
  • 修正模型的__str__方法
    原代码中__str__方法调用了不存在的self.article.code,会导致对象保存后调用__str__时报错,需改为return self.code或return self.designation。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:20:45