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

Django如何获取循环生成的HTML Select选项值?

解决Django中循环生成的评分选框取值问题

你的问题核心是所有下拉选框的name属性完全相同,提交后后端只能获取到最后一个选框的值。要解决这个问题,只需要让每个选框的name带上乐队的唯一标识(比如数据库ID),就能对应到具体乐队的评分。

步骤1:修改模板中的select标签

把原来固定的name="thursday_apex"改成包含乐队唯一标识的形式,比如用乐队的id:

{% for band in thursday_apex %}
<li> {{ band.band_name }}
    <select name="thursday_apex_{{ band.id }}">
        <option value="0">Didn't watch</option>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
        <option value="6">6</option>
        <option value="7">7</option>
        <option value="8">8</option>
        <option value="9">9</option>
        <option value="10">10</option>
    </select>
</li>
{% endfor %}

也可以用数组式命名,让后端直接拿到字典结构,写法更简洁:

<select name="thursday_apex[{{ band.id }}]">

步骤2:在views.py中获取对应评分

方式1:遍历已知乐队列表匹配

如果已经知道本次页面渲染的thursday_apex乐队列表,直接遍历每个乐队,从POST中取出对应值即可:

def your_view(request):
    if request.method == 'POST':
        # 假设thursday_apex是你传入模板的乐队查询集
        for band in thursday_apex:
            # 对应第一种name命名方式
            score = request.POST.get(f'thursday_apex_{band.id}')
            # 对应数组式命名方式的写法
            # score = request.POST.get(f'thursday_apex[{band.id}]')
            if score is not None:
                # 这里添加评分处理逻辑,比如保存到数据库
                print(f"乐队{band.band_name}的评分:{score}")
    # 其他视图逻辑...

方式2:直接遍历POST相关字段

如果不确定当前页面的乐队列表,也可以直接筛选POST中目标前缀的字段:

def your_view(request):
    if request.method == 'POST':
        for key, value in request.POST.items():
            if key.startswith('thursday_apex_'):
                # 提取乐队ID
                band_id = key.split('_')[-1]
                # 根据ID查询对应乐队
                band = Band.objects.get(id=band_id)
                print(f"乐队{band.band_name}的评分:{value}")
    # 其他视图逻辑...

注意事项

  • 确保乐队的id是唯一值,这是Django模型的默认配置,无需额外设置。
  • 数组式命名的方式在Django中会自动整理成类字典结构,取值更符合直觉,推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:32:43