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

如何为字段设置默认值?Django设置后存null报错求解

Django字段默认值相关问题解答

一、如何更新已有字段设置默认值?

  • 在模型类的目标字段中添加default参数,示例:
    class YourModel(models.Model):
        # 对原有字段修改,添加default参数
        status = models.CharField(max_length=20, default="active")
    
  • 运行python manage.py makemigrations生成迁移文件,终端会提示是否为现有数据批量设置默认值,按需选择即可
  • 执行python manage.py migrate完成数据库层面的字段更新

二、关于默认值与null冲突的原因

  • 只加default未加null=True时触发IntegrityError:
    此时数据库中该字段被设置为NOT NULL约束。default的生效场景是当你没有给该字段赋值时,Django会自动填充默认值;但如果你主动给字段赋值为None(即null),Django会直接将null传递给数据库,这就违反了NOT NULL约束,因此触发错误。default不会自动把你传入的null替换成默认值。
  • 加了null=True后字段直接存null:
    添加null=True后,数据库允许该字段存储null值。当你主动给字段赋值为null时,Django会优先使用你传入的值,直接将null写入数据库,不会触发默认值逻辑——默认值仅在字段未被显式赋值的情况下才会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:02:39