2013-03-28 44 views
1

我工作的Django選擇的值,我需要知道我怎樣才能得到forms.ChoiceField獲取上一個Django forms.ChoiceField

forms.py

class FilterForm(forms.Form): 
    continent = forms.ChoiceField(choices=Select_continent()) 

我試圖與選擇的值: views.py

def Select_continent(): 
    db = MySQLdb.connect("localhost", "root", "aqw", "PFE_Project") 
    cursor = db.cursor() 
    sql = "SELECT Continent FROM myform_servercomponents" 

    try: 
     cursor.execute(sql) 
     results = cursor.fetchall() 
     continents = [] 
     i=0 
     for row in results: 
      continents.append(('i',row[0])) 
      i+=1 
    except: 
     print "Error: unable to fetch data" 
    db.close() 
    return continents 
def affiche_all(request, currency): 
    if request.method == 'POST':                                     
     form = FilterForm(request.POST)                                    
     if form.is_valid() : 
      Continent = form.cleaned_data['Continent'] 
      Continent = dict(form.fields['Continent'])[Continent] 
      url = reverse('affiche_all', args=(), kwargs={'continent': Continent}) 
      return HttpResponseRedirect(url) 

Continent總是ChoiceField返回最後一個值,我需要的是選擇一個。
有什麼建議嗎?

+0

什麼是大陸功能或實例您設置的選擇等於forms.py?可能與那裏正在做的事情有關。 'forms.cleaned_data ['Continent']'應該是獲得選定值所需的全部。 – Austin

回答

1

dict(form.fields['Continent'])看起來很奇怪,你的意思是:

continent = dict(continents())[form.cleaned_data['Continent']] 
# or 
continent = dict(form.fields['Continent'].choices)[form.cleaned_data['Continent']] 

附:我用continent而不是Continent作爲變量名稱。名字w /第一個大寫字母通常用於命名類。

+0

總是得到我的ChoiceField中的最後一個值 – Imoum

+0

@AmineAntri你的ChoiceField.choices是什麼樣的?或者「continents()」如何工作? – okm

+0

我從我的數據庫中檢索所有的大洲 – Imoum