Django:ChoiceField没有返回选项

时间:2014-05-14 17:55:43

标签: django django-forms html-form

我在尝试获取一个简单的选择字段以将其选项返回到我的应用程序中的html页面时遇到问题。我一直在研究其他几个问题12和一些在线教程,但似乎无法做到正确。

我当前的代码不返回下拉列表,只返回提交按钮。

最理想的情况是,我想在下拉列表中返回国家/地区,并选择将其设为必填字段。

我能够使用models.Model使用这种方法返回类似的视图,但似乎无法从forms.Form工作中获取ChoiceField。

非常感谢任何帮助,谢谢。

models.py

from django import forms

class CountryChoiceTwo(forms.Form):

    IRELAND = 'IR'
    ENGLAND = 'EN'
    FRANCE = 'FR'
    SCOTLAND = 'SC'
    WALES = 'WA'
    ITALY = 'IT'

    COUNTRY = (
        (IRELAND, "Ireland"),
        (ENGLAND, "England"),
        (FRANCE, "France"),
        (SCOTLAND, "Scotland"),
        (WALES, "Wales"),
        (ITALY, "Italy"),
               )

    origin = forms.ChoiceField(widget=forms.Select(), choices=COUNTRY, initial= IRELAND)

    def __unicode__(self):
        return self.origin

views.py

from books.models import CountryChoiceTwo

def ContactForm(request):

    form = CountryChoiceTwo(initial={'origin':COUNTRY[1]})   
    return render(request, 'country_choice.html', {'form': form} )

country_choices.html

<h2>What country are you from?</h2>


<form action="" method="post">
    {% csrf_token %}

    {{form.as_p}}


<input type="submit" value="Vote" />               
</form>

1 个答案:

答案 0 :(得分:0)

COUNTRY未在视图函数的范围内定义。

您可以在表单中添加COUNTRY作为前缀:

def ContactForm(request):
    form = CountryChoiceTwo(initial={'origin': CountryChoiceTwo.COUNTRY[1]})
    return render(request, 'country_choice.html', {'form': form} )