Django提交表单仅保存模型默认值 无法写入用户输入内容问题求解
问题核心
你的ModelForm字段与模型字段名称不匹配,是导致提交数据无法写入数据库的直接原因:
Django ModelForm 执行save()操作时,只会把和模型字段同名的表单验证数据同步到模型实例,你在表单中自定义的Equation、Color字段,和模型里实际定义的eq_input、color字段名无法对应,提交的数据会被直接忽略,最终写入数据库的只有你预设的默认值。
另外你提供的views.py代码存在缩进错误,运行时会触发语法报错,也需要同步修正。
修正后代码
1. forms.py 调整(核心修改)
将表单字段名改为和模型字段完全一致,同时将fields改为列表类型(保证表单字段渲染顺序固定):
from django import forms from .models import Value class ViewForm(forms.ModelForm): # 字段名匹配模型,label保留你需要的前端显示文本 eq_input = forms.CharField(max_length=20, label='Equation') color = forms.CharField(max_length=20, label='Color') class Meta: model = Value fields = [ 'eq_input', 'color' ]
2. views.py 修正缩进
from django.shortcuts import render from .models import Value from .forms import ViewForm def home_view(request): if request.method == "POST": form = ViewForm(request.POST) if form.is_valid(): form.save() else: form = ViewForm() # 修正缩进,和if/else块同级 context = { 'form': form } return render(request, "home.html", context)
修改完成后重新启动服务,提交的数据就能正常写入数据库了。
内容的提问来源于stack exchange,提问作者Arnav
相关产品推荐
相关产品推荐

