gpt4 book ai didi

Django 和单选按钮

转载 作者:行者123 更新时间:2023-12-02 05:20:37 26 4
gpt4 key购买 nike

我正在实现一个测验应用程序,并使用单选按钮显示多项选择答案。

我需要对每个问题的答案进行分组,所以我有这样的

{% for answer in quiz.quizanswer_set.all %}
<p><input type="radio" name="score[{{quiz.id}}]" value="{{answer.score}}"/>{{answer.answer}}</p>
{% endfor %}

当我点击提交时,我有这样的 POST 对象

<QueryDict: {u'score[1]': [u'10'], u'score[3]': [u'10'], u'score[2]': [u'10'], u'Get Result': [u'Submit']}>

如何以规范的方式循环遍历分数?

我尝试过 request.POST.getlist('score') 它返回空列表

PS。 quiz.id 可能不是按顺序排列的,它来自数据库行 id。

我目前的解决办法是:

for quiz in Quiz.objects.all():
total_score += int(request.POST.get('score[{0}]'.format(quiz.id)))

最佳答案

只需过滤 POST 键:

for score_key in filter(lambda key:key.startswith('score'), request.POST.keys()):

total_score += int(request.POST[score_key])

更新

考虑一下,列表理解会比过滤器更好:

for score_key in [key for key in request.POST.keys() if key.startswith('score[')]:

total_score += int(request.POST[score_key])

更新2

我一直在研究的另一种方法是保持每个单选按钮的名称相同(例如分数),然后将测验 ID 与值合并:

<input type="radio" name="score" value="{{quiz.id}}-{{answer.score}} /> 

然后您可以轻松获取所有分数的列表并拆分值:

for value in request.POST['score']:
quiz_id, score = value.split('-')

关于Django 和单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14948841/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com