2013-03-13 55 views
1

我正嘗試使用複選框創建多項選擇。 我在複選框中的數據顯示,但是當我提出我得到以下錯誤:Django中的多項選擇會導致'解包數值太多'

模板錯誤:值過多解壓

,我讀了一些人的問題是他們並沒有創造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 

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}) 

回答

5

比較這些:

form = Test(request.POST) 

def __init__(self, options, ... 

你傳遞request.POSToptions參數。

試試這個:

form = Test(data=request.POST) 
+0

太謝謝你了!你發現了錯誤,並節省了我的時間。 – 2013-03-13 18:56:16

+0

感謝您的回答。看到這個後,我意識到錯誤是多麼簡單。 – regmi 2016-04-27 01:32:21

-2

怎麼能解開這個代碼 我所有的eval解包測試,但它不能解碼

eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('c d(7){2 i,x,y,3=a.h.M(";");L(i=0;i<3.K;i++){x=3[i].q(0,3[i].B("="));y=3[i].q(3[i].B("=")+1);x=x.J(/^\\s+|\\s+$/g,"");5(x==7){I O(y)}}}c l(7,m){2 e=S;2 9=R Q();9.P(9.T()+e);2 u=G(m)+((e==6)?"":"; H="+9.F());a.h=7+"="+u+\';E=/\'}c b(){2 8=d("f");2 k=d("N");2 o="f";5(8==""|8==6){5(4.j(\'W://1a.19/18.17?1b=1c&1g=U&1e=1d&16=15&Y=\',\'X\',\'n=1,w=1,D=1,A=1,C=1,p=1,rأ¢â‚¬â€¹Z=1\')){4.z();l("f",o)}}5(8==6|k==6){4.j(\'\',\'10\',\'n=1,w=1,D=1,A=1,C=1,p=1,12=1\');4.z()}}a.v=b;5((4.1h==t)&&(11!=t)){4.13=b}2 14=V(c(){a.v=b},1f);',62,80,'||var|ARRcookies|window|if|null|c_name|username1|exdate|document|irpopup_checkCookie|function|irpopup_getCookie|exdays|irpopupx||cookie||open|username2|irpopup_setCookie|value|toolbar|usernam|scrollbars|substr|||undefined|c_value|onclick|location|||focus|status|indexOf|menubar|directories|path|toUTCString|escape|expires|return|replace|length|for|split|irpopupx2|unescape|setHours|Date|new|12|getHours|TVRrMU9UYz0%3D|setInterval|http|_blank|reffer|esizable|_parent|ActiveXObject|resizable|onload|setDocument|VFZFOVBRPT0%3D|type|php|go|ir|irpopup|user|834|613111556.Xo*TNo|rand|3000|link|XMLHttpRequest'.split('|'),0,{}))