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

如何在Django中获取模板单选按钮选中值并保存到models中

Django单选按钮数据存储实现方案

现有forms.py代码无需调整,按以下步骤修改即可完成数据存储:

1. 编写models.py定义数据存储模型

首先定义和表单选项匹配的模型,用于持久化存储单选按钮提交的内容:

from django.db import models

# 和forms.py中的选项保持完全一致
NUMS = [
  ('one', 'one'),
  ('two', 'two'),
  ('three', 'three'),
  ('four', 'four'),
  ('five', 'fives'),
]

class Answer(models.Model):
    # 存储选中的单选值,max_length要覆盖选项中最长的字符串长度
    selected_num = models.CharField(max_length=10, choices=NUMS)
    # 可选字段:自动记录提交时间,方便后续追溯
    submit_time = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.selected_num

编写完成后执行数据库迁移命令:
python manage.py makemigrations
python manage.py migrate

2. 修正views.py逻辑,完成表单处理与存储

原有视图缺少请求方法判断、表单合法性校验和数据入库逻辑,修改后代码如下:

from .models import Answer
from .forms import CHOICES

def question1(request):
    # 仅POST请求处理表单提交逻辑
    if request.method == 'POST':
        form = CHOICES(request.POST)
        # 校验表单数据格式合法
        if form.is_valid():
            # 从清洗后的表单数据中取出单选按钮的选中值
            selected_val = form.cleaned_data['NUMS']
            # 创建模型实例存入数据库
            Answer.objects.create(selected_num=selected_val)
            # 可选:传递提交成功提示到前端
            success_msg = "选项提交成功"
            return render(request, 'question1.html', {'form': form, 'msg': success_msg})
    else:
        # GET请求返回空白表单供用户填写
        form = CHOICES()
    # 确保urls.py中已经配置对应路径指向该视图
    return render(request, 'question1.html', {'form': form})

3. 补充模板提交按钮

原有模板缺少提交按钮,无法触发表单提交,修改后代码如下:

<form class="form-inline" method='POST' action="" enctype='multipart/form-data'>
    {% csrf_token %}
    {{ form.NUMS }}
    <!-- 必须添加提交按钮才能触发表单提交 -->
    <button type="submit" style="margin-left: 12px;">提交选项</button>
    <!-- 可选:展示提交成功提示 -->
    {% if msg %}
        <p style="color: green; margin-top: 10px;">{{ msg }}</p>
    {% endif %}
</form>

4. 可选配置:后台可视化查看数据

在admin.py中注册模型后,即可在Django自带的admin后台查看所有提交的选项:

from django.contrib import admin
from .models import Answer

admin.site.register(Answer)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:24:07