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

如何在Django中获取单选框值?单选框存储逻辑实现求助

解决Django单选框值获取与答案字段赋值问题

我一眼就瞅出问题所在了:你把三个答案字段ans1、ans2、ans3全直接赋值成request.POST['nm'],但同一组单选框(共用一个name)只会返回用户选中的那一个值,这么写不管选哪个选项,三个字段都会存同一个值,完全不符合你“选b就只把ans2设为'b',另外两列留空”的需求。

来,给你把视图函数的逻辑修正一下:

  1. 先安全获取用户选中的单选框值——建议用request.POST.get('nm', '')代替直接取键,避免用户没选就提交时抛出KeyError;
  2. 初始化三个答案字段为空字符串;
  3. 根据选中的值,给对应的字段单独赋值。

修改后的视图函数代码:

def updateans(request):
    if request.method == 'POST':
        user_id = request.POST['user_id']
        questionid = request.POST['questionid']
        # 获取选中的单选框值,默认空字符串防止报错
        selected_value = request.POST.get('nm', '')
        
        # 先把三个答案字段初始为空
        ans1 = ''
        ans2 = ''
        ans3 = ''
        
        # 根据选中的值给对应字段赋值
        if selected_value == 'a':
            ans1 = 'a'
        elif selected_value == 'b':
            ans2 = 'b'
        elif selected_value == 'c':
            ans3 = 'c'
        
        myans = Answers(
            questionid_id=questionid, 
            userid_id=user_id, 
            ans1=ans1, 
            ans2=ans2, 
            ans3=ans3
        )
        myans.save()
        # 这里建议加个提交后的反馈,比如重定向到结果页或者返回提示
        # return redirect('answer_success_page')
        # 或者 return HttpResponse("答案提交成功")

另外给你提个小优化:可以给表单里的单选框加上required属性,强制用户必须选一个选项再提交,前端就能拦截未选择的情况,减少后端的异常处理压力,比如:

<input type="radio" id="ans1" name="nm" value="a" class="form-control" required>{{question.ans1}}
<input type="radio" id="ans2" name="nm" value="b" class="form-control" required>{{question.ans2}}
<input type="radio" id="ans3" name="nm" value="c" class="form-control" required>{{question.ans3}}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 16:07:32