使用Django模型表单提交数据无法写入数据库的问题求助
需要修改的问题汇总
views.py(核心错误所在)
- 请求方法判断错误:原代码
if request == 'POST'需修改为if request.method == 'POST',原写法永远无法匹配POST请求,导致保存逻辑从未触发,这是表单提交后数据未入库的直接原因。 - save方法参数错误:原代码
form.save(Commit=False)的参数需改为小写form.save(commit=False),Django的save方法参数为小写commit,大写会触发参数错误。 - 缩进错误:results函数缩进在AppS函数内部,需调整缩进和AppS函数同级,否则无法正常访问对应的路由。
- 优化建议:表单保存成功后增加重定向逻辑,避免用户刷新页面重复提交,例如保存后添加
return redirect('results')(需提前配置好results页面对应的路由名称)。
forms.py
- 方法缩进错误:
clean_Producer_Email方法当前是全局函数,没有缩进在AppsForm类内部,导致自定义的邮箱校验规则完全不生效,需将该方法整体缩进至AppsForm类的代码块内。 - 校验逻辑优化:当前校验逻辑为遍历全表查询邮箱是否重复,性能极低,如果需求是邮箱唯一,直接在models.py的Producer_Email字段添加
unique=True参数即可,无需手动编写校验逻辑。 - 冗余校验:邮箱非空校验无需手动编写,该字段在模型中未设置
blank=True,表单默认会自带非空校验。
models.py
- 方法缩进错误:
__unicode__方法未缩进在Appear类内部,导致实例打印逻辑不生效,若使用Python3环境,需将方法名改为__str__(Python3不再使用__unicode__方法)。 - 无效参数:DateField无需设置max_length参数,可直接删除该参数。
内容的提问来源于stack exchange,提问作者Houston Khanyile
相关产品推荐
相关产品推荐

