2010-09-11 35 views
0

我以爲我想到了,但現在我失去了一些東西。從列表中選擇菜單在Django

首先我有一個QuerySet,記錄

records = Record.objects.all() 

現在我要製作成表格的列一個清單此,columnA

alist = records.values_list('columnA') 

然後我想通過此列表作爲自定義表單的參數。

FilterForm(alist) 

這裏是我的形式

class FilterForm(forms.Form,list): 
    numbers = forms.ChoiceField(list) 

但不斷收到錯誤「類型」對象不是可迭代。我不確定這個問題與列表的傳遞有關,因爲當我嘗試在shell中運行此代碼時,當我導入FilterForm時收到錯誤消息。編輯:我現在更改了我的FilterForm,現在它看起來像這樣。

class FilterForm(forms.Form): 
    def __init__(self,numbers): 
     number = forms.ChoiceField(numbers) 

所以現在我認爲這是更明顯的,我想要做的,傳遞給FilterForm列表。但是,當我渲染我的模板並傳遞表單時,不會顯示錶單域。沒有錯誤消息雖然

編輯編輯:也試過這個,看到了它的在線

class FilterForm(forms.Form): 
    number = forms.ChoiceField() 

    def __init__(self,numbers): 
     super(FilterForm,self).__init__() 
     self.fields['number'].choices=numbers 

但錯誤:

Exception Type:  TemplateSyntaxError 
Exception Value:  

Caught ValueError while rendering: need more than 1 value to unpack 

回答

1

的問題是在這行字list

numbers = forms.ChoiceField(list) 

您需要爲ChoiceField提供特定列表。

+0

啊,蟒蛇不是Java ...我想要做的是有階級接受列表作爲參數。我想這不是所謂的列表。在java中,我會構造一個FilterForm(List l)或者其他的東西,但是,這是如何不同的python – JPC 2010-09-11 22:37:55

+0

編輯我原來的文章 – JPC 2010-09-11 22:59:48

0

這裏有一個錯誤:

class FilterForm(forms.Form,list): 
    numbers = forms.ChoiceField(list) 

你讓FilterFormforms.Formlist一個子類;那麼您預計list可作爲參數ChoiceField

我認爲你正在尋找動態ChoiceFields

延伸閱讀:

+0

編輯我的原始文章 – JPC 2010-09-11 23:00:42