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

Django执行python manage.py makemigrations后模型未迁移问题咨询

Django迁移报错:添加非空字段'core'需指定默认值的解决方法

方案1:命令行直接提供一次性默认值

当CLI弹出选项时,输入1回车,接着按提示输入对应类型的默认值(比如外键填关联对象ID,字符字段填对应字符串)。Django会自动生成带临时默认值的迁移文件,执行python manage.py migrate后,现有数据行的core字段都会被填充为你输入的值。

方案2:手动在models.py中定义默认值

  • 打开models.py,找到Event模型的core字段,添加default参数:
    # 示例:外键类型(假设关联Core模型)
    core = models.ForeignKey(Core, on_delete=models.CASCADE, default=1)
    # 示例:字符类型
    core = models.CharField(max_length=100, default="默认内容")
    
  • 若需要动态生成默认值,可定义函数关联:
    def get_default_core():
        # 逻辑示例:返回已有Core对象,无则创建新对象
        return Core.objects.first() or Core.objects.create(name="默认核心")
    
    core = models.ForeignKey(Core, on_delete=models.CASCADE, default=get_default_core)
    
  • 保存文件后,重新执行python manage.py makemigrations,生成迁移文件后再执行python manage.py migrate完成迁移。

额外注意事项

  • 若core是外键,确保默认值对应的对象已存在于数据库,否则迁移会报错。
  • 若不想用默认值填充旧数据,可先给字段加null=True,生成并执行迁移后手动填充数据,再去掉null=True重新生成迁移(适合数据量小的场景)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:40:58