2013-05-07 21 views
0

我在Django創建了一個形式如下:創建在Django形式不是基於模型會導致錯誤

class advancedsearch(forms.Form): 
    choices = forms.ChoiceField (label="choices", choices = ("1", "2", "3"), required= False) 

現在我想要在視圖中使用如下:

def advancedsearch(request): 
    # if request.method == "POST": 
    # search = advancedsearch(request.POST, request.FILES) 
    # if search.is_valid(): 
    #  return HttpResponseRedirect(reverse("view.designs")) # UPDATE REDIRECT 
    # else: 
    #  print "FORM IS NOT VALID" 
    #  # GET request 
    # else: 
    # search = advancedsearch() 
    # return render_to_response("advancedsearch.html", { 
    #  "search": search, 
    #  }, context_instance=RequestContext(request,{})) 
    # # generic case 
    search = advancedsearch() 
    return render_to_response("advancedsearch.html", { 
     "search": search, 
     }, context_instance=RequestContext(request, {})) 

我得到的錯誤是advancedsearch() takes exactly 1 argument (0 given)

我不認爲我需要傳遞函數的參數 - 但它看起來像我...我應該通過它?

回答

1

search = advancedsearch()被稱爲視圖方法advancedsearch()而不是形式

你可以做這樣的事情:

class AdvancedSearchForm(forms.Form): 
    choices = forms.ChoiceField (label="choices", choices = ((1, 1),(2, 2),(2, 3)), required= False) 

,並在視圖:

search = AdvancedSearchForm() 

這應該可以解決您的問題。

+0

謝謝,但現在我得到的錯誤:「當我嘗試在我的模板中使用它作爲'{{search.choices}}'...時,需要多個值來解壓縮...」是否與此相關? – user1328021 2013-05-07 20:04:34

+0

檢查編輯.. – karthikr 2013-05-07 20:05:27

+0

謝謝!不知道我是如何錯過的... – user1328021 2013-05-07 20:07:10

1

您給表單和視圖命名。所以視圖自動調用它自己,沒有任何東西阻止它。

表單不需要參數,但由於視圖的名稱與模型相同,因此Python認爲您需要調用視圖,該視圖需要參數。

您應該重新命名模型或視圖。

相關問題