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

Django提交房间评论时触发NOT NULL约束错误的原因排查

问题根因

非空约束报错是前后端表单字段名不匹配导致的:

  • 你的Message模型中body字段是必填非空字段(未设置null=True),数据库层禁止写入空值
  • 前端评论输入框的name属性写的是comment
  • 后端视图创建消息时,从POST请求里取的参数字段名是body

字段名不匹配时,request.POST.get('body')会返回None,给必填的body字段传空值就会直接触发非空约束错误。

修复方法

两种修改方式二选一即可,核心是保证前后端字段名一致:

  1. 修改前端模板,把输入框的name属性改成和后端一致的body
<input type="text" name="body" placeholder="Write your message here..."/>
  1. 修改后端视图,把取POST参数的键名改成和前端一致的comment
if request.method == 'POST':
    message = Message.objects.create(
        user=request.user,
        room=room,
        body=request.POST.get('comment')
    )
    return redirect('room', pk=room.id)

补充建议:创建评论前最好加一层非空判断,比如校验取到的评论内容去除首尾空格后不为空再执行入库操作,避免用户提交空内容触发同类错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 02:45:30