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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:57:02