Django表单不验证:“选择一个有效的选择.20不是可用的选择之一”

时间:2011-08-24 09:28:48

标签: django jquery django-forms choicefield

我有一个由2个ChoiceField和一个CharField组成的表单。当选择第一个项目时,第二个ChoiceField通过ajax填充。

填充它的模板如下:

{% for a in assets %}
<option value="{{ a.asset_id }}">{{ a.asset_name }}_{{ a.asset_description }}</option>
{% endfor %}

当我尝试提交表单时,我收到以下错误:

Select a valid choice. 20 is not one of the available choices.

指向第二个ChoiceField,20对应于所选项目的{{a.asset_id}}。

我在其他论坛上看到了这个错误,但它几乎总是由于我不关心的multipleChoiceField。

我做错了什么?

1 个答案:

答案 0 :(得分:5)

ChoiceField需要设置choices。这些不只是确定下拉列表中显示的内容,但重要的是,它还确定在提交表单时应接受哪些值。

让我解释一下你的情况。您最初的选择设置为:

CHOICES = (
    ('', '-- choisir un type en premier')
)

这意味着唯一接受的是空白选择(元组中的第一个条目'',是字段的实际值,choisir...是文本值)。

因此,当您通过Javascript添加<option>元素时,它们的值不会在CHOICES中,因此当您提交该表单时,它们会被Django拒绝。 10不在CHOICES

表单提交的视图应该查看提交给它的选项的值,然后相应地更改传递给ChoiceField的CHOICES的值。