Django 多个具有相同名称的输入字段值

bin*_*npy 6 python forms django

我需要帮助。如何处理具有多个输入字段值且名称相同的表单?并且只有一次查看,这实际上是针对基本问题的形式......我从/sf/answers/33488451/找到了这个方法的另一个想法:

relations = request.POST.getlist('relations')
Run Code Online (Sandbox Code Playgroud)

Django 问题表

我该如何处理这一切?目前我正在使用<input type="radio"...,但当然,如果它以一次形式具有相同的名称,它就无法工作。但是如果我使用: <input type="checkbox"...,答案可以在一个问题中检查 1 个以上...

也许是这样的:

<input type="radio" name="answer-{{ question.id }}">
Run Code Online (Sandbox Code Playgroud)

我怎样才能在视图中看到所有内容?

解决了:

在我的测试中:

{% for question in questions %}
    <input type="hidden" name="question" value="{{ question.id }}/>

    {% for answer in question.get_answers %}
        <input type="radio" name="answer-{{ question.id }}" value={{ answer.score }}>
    {% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

views.py

questions = request.POST.getlist('question')
answers = [request.POST['answer-{}'.format(q)] for q in questions]
Run Code Online (Sandbox Code Playgroud)

以及它的结果:

['20', '19', '16', '13', '11', '10', '9', '8', '1']
['5', '2', '3', '4', '1', '4', '4', '2', '2']
Run Code Online (Sandbox Code Playgroud)

nev*_*ner 3

如果我理解正确的话,你需要实施多项选择吗?然后你可以在你的模板中这样做:

{% for answer in answers %}
    <input type="checkbox" name="answer" id="answer{{ forloop.counter }}" value="{{ answer.id }}">
{% endif %}
Run Code Online (Sandbox Code Playgroud)

视野中的安迪:

answer = request.POST.getlist('answer')
for el in answer:
    pass
Run Code Online (Sandbox Code Playgroud)