django TypedChoiceField - 不允许默认值为0

时间:2014-08-18 06:10:47

标签: javascript jquery django-forms django-templates parsley.js

我不确定我是否正确设计了我的forms.py文件,当涉及到TypedChoiceField并且不允许用户输入选定的值“0”时。

我已阅读django docs,但未找到任何相关信息。有一些关于empty_value的内容,但我找不到关于TypedChoiceField的任何示例。

我在选择列表中有一个国家/地区名称列表:

<select data-parsley-required="true" name="address_country_style_type" data-parsley-required-message="This field is required." id="id_address_country_style_type" data-parsley-id="1440" class="input-xxlarge" data-original-title="" title="">
    <option value="0"> Select a country or territory</option>
    <option value="1">Afghanistan</option>
    <option value="2">Aland Islands</option>
    <option value="3">Albania</option>
    ......
</select>

在我的forms.py文件中,我有以下内容(包括已清理的数据代码):

@parsleyfy
class AddressDetailsForm(forms.Form):

required_css_class = 'required'

address_country_style_type = forms.TypedChoiceField(
    coerce=int,
    label=_('Address Format'),
    choices=[(x, x) for x in range(0, 256)],
    required=True)
....

def clean(self):

    cd_addf = super(AddressDetailsForm, self).clean()

    if 'address_country_style_type' in cd_addf and cd_addf['address_country_style_type'] == 0:

        self._errors['address_country_style_type'] = self.error_class([_("You must select an Address Format.")])
        del self.cleaned_data['address_country_style_type']

    else:
        ....

我添加了django-parsley来设置客户端验证。

在“address_country_style_type = forms.TypedChoiceField”声明中的forms.py文件中是否有一种方法可以声明address_country_style_type不能接受选项值0,以便通过以下方式自动获取此验证: django-parsley和我可以剔除清理过的数据if if?

1 个答案:

答案 0 :(得分:3)

我没有和django合作过,所以我只能用parsleyjs来帮助你。

如果您设法移除value="0"并将其放置为value="",Parsleyjs会告诉您该字段是必需的:

<option value=""> Select a country or territory</option>