如何为字段设置默认值?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
相关产品推荐
相关产品推荐

