3

我正在研究 Django,我需要知道如何在forms.ChoiceField

表格.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我需要的是选定的值。
有什么建议么?

4

1 回答 1

2

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

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

PS我已经使用continent而不是Continent作为变量名。带有第一个大写字母的名称通常用于命名类。

于 2013-03-28T15:18:47.600 回答