2013-03-28 3 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']] 

P.S. Я использовал continent вместо Continent как имя переменной. Имя с первым верхним регистром обычно используется для класса именования.

+0

всегда получает последнее значение в моем ChoiceField – Imoum

+0

@AmineAntri Как выглядит ваш 'ChoiceField.choices'? Или Как работает 'continents()'? – okm

+0

i удаляет все континенты из моего DB – Imoum

Смежные вопросы