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

Django创建用户关联Profile触发IntegrityError:dob非空约束失败

解决方法

1. 修改Profile模型的dob字段

在models.py中,将dob字段的定义修改为:

dob = models.DateField(blank=True, null=True)

2. 执行数据库迁移命令

在终端运行以下命令,同步模型修改到数据库:

python manage.py makemigrations
python manage.py migrate

原因说明

  • blank=True仅控制表单验证时允许字段为空,不会改变数据库的约束规则。
  • DateField类型默认在数据库中是NOT NULL约束,创建Profile实例时未给dob赋值,就会触发非空约束错误。
  • 添加null=True后,数据库会允许该字段存储NULL值,和blank=True配合即可实现“可选填写”的需求。

另外可以检查Profile模型中其他非字符串类型的字段(如日期、数字类),若需要支持可选填写,都需要同时设置blank=True和null=True;而CharField仅设置blank=True即可,会自动存储空字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 01:33:24