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

Django表单验证成功后如何更新模型的status属性

错误原因

你直接操作form['status']会报错,是因为form['字段名']返回的是表单字段的渲染实例,不是用来存储字段值的对象,不能直接赋值修改。

正确实现方案

Django的ModelForm提供了save(commit=False)的用法,调用后会返回对应模型的实例,还不会真正写入数据库,你可以修改这个实例的字段值后再手动执行保存即可。另外建议用form.cleaned_data获取经过校验的字段值,比直接取request.POST更安全,修改后的视图代码如下:

def registration(request) :
    form = GeeksForm(request.POST)
    # Check if the form is valid:
    if form.is_valid():
        # 从cleaned_data取校验后的手机号
        number = form.cleaned_data['contact_number']
        print(number)
        r = requests.get('http://apilayer.net/api/validate?access_key=***********&number=*******&country_code=+91&format=1', params=request.GET)
        if r.status_code == 200:
            # 先获取未写入数据库的模型实例
            tutor_obj = form.save(commit=False)
            # 修改status字段值
            tutor_obj.status = True
            # 保存到数据库
            tutor_obj.save()
            # 如果你的模型后续新增ManyToMany字段,需要额外调用form.save_m2m(),当前场景可忽略
            return HttpResponse('Yay, it worked')
        currentID = form.auto_id
        print(currentID)
    else :
        print("Invalid")   
    return render(request, 'Tutorform.html', {'form': form})  

内容的提问来源于stack exchange,提问作者Dipesh Pokhrel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:54:04