Django中的多项选择会引发"太多的值来解压"

Roc*_*ini 1 forms django tuples multiple-choice

我正在尝试使用复选框创建多项选择.我在复选框中显示数据,但是当我提交时,我收到以下错误:

模板错误:解压缩的值太多

我读到有些人的问题是他们没有创建2tuples作为选择列表的元素.但事实并非如此.问题是什么?

forms.py

class Test(forms.Form):
    answer = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple)

    def __init__(self, options, *args, **kwargs):
        super(Test, self).__init__(*args, **kwargs)
        self.fields['answer'].choices = options
Run Code Online (Sandbox Code Playgroud)

views.py

def multiChoice(request,ex):

    multi = MultipleChoice.objects.get(pk=ex)
    choices = multi.correct_choices.all() | multi.wrong_choices.all()

    if request.method == 'POST':
        form = Test(request.POST)
        if form.is_valid():
            multiple = form.save()
            return HttpResponseRedirect('/edu/multi/1')
    else:
        form = Test(options=[( choice.id , choice ) for choice in choices])

    return render(request,'edu/multi.html', {'form': form, 'multi': multi , 'choices': choices})
Run Code Online (Sandbox Code Playgroud)

Pav*_*sov 5

比较这些:

form = Test(request.POST)

def __init__(self, options, ...
Run Code Online (Sandbox Code Playgroud)

request.POST作为options论点传递.

试试这个:

form = Test(data=request.POST)
Run Code Online (Sandbox Code Playgroud)