Django Form ChoiceField不适用于1个元素列表

时间:2018-11-28 21:35:42

标签: python django django-forms

在Django Web应用程序上工作时,我发现了一个奇怪的实例。

我有一个选项列表,希望用户从下拉列表中选择。为此,我使用了Django表单中的ChoiceField。但是,当我的选项仅包含单个2元组时(例如(((“ 1”,“ one”))无效),则不显示任何内容,并且出现错误“没有足够的值可解包(预期2,得到1)”在index.html中的builds.as_p行中。一旦我添加了至少一个另外的2元组(例如(((“ 1”,“一个”),(“ 2”,“两个”))有效)到我的选项,它就固定了。可能是什么原因造成的?

forms.py

class BuildForm(forms.Form):
    OPTIONS = (("1", "One"), ("2", "two"))
    Build_IDs = forms.ChoiceField(choices=OPTIONS) 

views.py

from .forms import BuildForm

def index(request):
    builds = BuildForm()
    return render(request, 'ReportGenerator/index.html', {"builds":builds})

templates / App / index.html

{% if builds %}
     <h2>Pick a Build</h2>
     <form method="POST" class="build-form">{% csrf_token %}
       {{ builds.as_p }}
     </form>
{% else %}
    <p>No reports are available.</p>
{% endif %}

1 个答案:

答案 0 :(得分:0)

您使用了错误的元组语法。

(("1", "one"))无效,但是(("1", "one"), )(注意逗号)有效。为了避免歧义,需要使用逗号。例如,当您执行1 + (1)时,如果没有逗号(1),则可能是一个元组,或者括号内可能只有1个。逗号解决了这个问题。