Django表单不验证:“选择有效选项。20不是可用选项之一”

Django表单不验证:“选择有效选项。20不是可用选项之一”,django,jquery,django-forms,choicefield,Django,Jquery,Django Forms,Choicefield,我有一个由2个ChoiceField和一个CharField组成的表单。当选择第一个选项的项目时,通过ajax填充第二个选项字段 填充它的模板如下所示: {% for a in assets %} <option value="{{ a.asset_id }}">{{ a.asset_name }}_{{ a.asset_description }}</option> {% endfor %} 指向第二个ChoiceField,20对应于所选项目的{a.asset_id

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

填充它的模板如下所示:

{% for a in assets %}
<option value="{{ a.asset_id }}">{{ a.asset_name }}_{{ a.asset_description }}</option>
{% endfor %}
指向第二个ChoiceField,20对应于所选项目的{a.asset_id}}

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


我做错了什么?

ChoiceField需要设置选项。这不仅决定了下拉列表中显示的内容,对您来说更重要的是,它还决定了提交表单时应接受哪些值

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

CHOICES = (
    ('', '-- choisir un type en premier')
)
这意味着唯一会被接受的是一个空白选择,即元组中的第一个条目,是字段的实际值,然后选择。。。是文本值

因此,当您通过Javascript添加元素时,它们的值不会出现在选项中,因此当您提交表单时,Django会拒绝它们。10不在选项中


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

ChoiceField需要设置选项。这不仅决定了下拉列表中显示的内容,对您来说更重要的是,它还决定了提交表单时应接受哪些值

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

CHOICES = (
    ('', '-- choisir un type en premier')
)
这意味着唯一会被接受的是一个空白选择,即元组中的第一个条目,是字段的实际值,然后选择。。。是文本值

因此,当您通过Javascript添加元素时,它们的值不会出现在选项中,因此当您提交表单时,Django会拒绝它们。10不在选项中


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

表单中ChoiceField的选项值是什么?在表单I中,选项值首先包含[,'-Choiser un type en premier'],然后根据在第一个选项中选择的项目添加一些选项标记如何使用Javascript添加选项标记?这是不好的,因为Django将拒绝任何不在选项中的选定内容。相反,您应该动态更改视图中选项的值。我使用javascript添加它们,因为我希望在第一个ChoiceField上选择一个项目时更新这些项目。我不知道没有javascript怎么做。我在讨论后实现了:表单中ChoiceField的选择值是多少?在表单I中,选择值首先包含[,'-Choiser un type en premier'],然后根据在第一个选项中选择的项目添加一些选项标记如何使用Javascript添加选项标记?这是不好的,因为Django将拒绝任何不在选项中的选定内容。相反,您应该动态更改视图中选项的值。我使用javascript添加它们,因为我希望在第一个ChoiceField上选择一个项目时更新这些项目。我不知道没有javascript怎么做,在讨论之后我实现了:选择的元组不是那种形式,我动态添加标记。我尝试添加和删除引号,但没有任何效果。如何访问视图中ChoiceField的选项?在视图中添加选项处理表单描述了选项的元组不在该表单中,我动态添加标记。我尝试添加和删除引号,但没有效果。如何访问视图中ChoiceField的选项?在处理表单的视图中添加选项如下所述