Django表单报错Key 'current'未在InputForm中找到问题求助
Django表单无法识别模型字段问题修复方案
- 核心错误原因:表单类继承错误。你在
forms.py中定义的InputForm继承了forms.Form(普通表单类),这类表单不会读取Meta配置项中的model和fields属性,因此不会自动生成对应模型字段,才会出现找不到current字段、可选字段列表为空的报错。基于模型生成表单必须继承forms.ModelForm。 - 其他附带问题:
- 自定义HTML表单需保证所有提交字段的
name属性和你在fields中指定的模型字段名完全一致,大小写、拼写不能有偏差 - 视图代码中
print( form.instance.my_field)属于无效代码,你的flightInfo模型没有my_field字段,运行到此处会触发新的报错,建议直接删除该行
- 自定义HTML表单需保证所有提交字段的
修复后代码示例
修复后的forms.py
from django import forms from .models import flightInfo class InputForm(forms.ModelForm): class Meta: model = flightInfo fields = ['airCode', 'start_date', 'day7', 'current']
优化后的views.py参考
from django.shortcuts import render from .models import * from django.http import HttpResponse from .forms import InputForm def detail(request): print(request.GET) print(request.POST) if request.method == 'POST': print(request.POST.get('current')) form = InputForm(request.POST) print(form['current'].value()) print(form.data['current']) if form.is_valid(): print(form.cleaned_data['current']) form.save() return HttpResponse('<h1>提交成功</h1>') # 表单验证不通过时可以打印错误排查问题 print(form.errors) return HttpResponse('<h1>表单验证失败</h1>') # GET请求场景处理 form = InputForm() return render(request, '你的模板路径.html', {'form': form})
内容的提问来源于stack exchange,提问作者Hasnain Sikander
相关产品推荐
相关产品推荐

