Django提交评论报错:Field 'id' expected a number获Transfernews对象如何修复
报错修复方案
问题根因
报错是因为Comment模型的transfernews外键对应的数据库字段transfernews_id要求存储整数类型的关联主键,你的代码中给该字段赋值了整个Transfernews模型对象,类型不匹配触发异常。
修复方法
修改views.py中的对应代码即可,以下两种方案任选其一:
- 方案1:直接给外键属性赋值模型对象(Django官方推荐写法)
将原有代码
替换为new_comment.transfernews_id = Transfernews.objects.get(id=news)
Django会自动提取模型对象的主键存入对应的new_comment.transfernews = Transfernews.objects.get(id=news)transfernews_id数据库字段。 - 方案2:直接给
transfernews_id赋值主键数值
不需要额外查询模型对象,直接传入前端提交的id值即可:new_comment.transfernews_id = news
可选优化建议
你当前的模板中在循环渲染每个Transfernews的评论表单时,共用了同一个form实例,提交时可能出现表单验证错误提示串到其他新闻的表单下的问题,建议视图中不需要提前实例化form,或者给每个表单单独生成实例。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

