Django表单不验证: "Select a valid choice. 20 is not one of the available choices"

标签 django jquery django-forms choicefield

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

填充它的模板如下:

{% 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 而引起的,这不是我关心的。

我做错了什么?

最佳答案

ChoiceField 需要有 choices放。这些不仅决定了下拉列表中显示的内容,而且对您来说重要的是,它还决定了提交表单时应接受哪些值。

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

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

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

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

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

关于Django表单不验证: "Select a valid choice. 20 is not one of the available choices",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7173196/

相关文章:

django.core.exceptions.FieldError : Unknown field(s) (body ) specified for Comment

python - 带有条件函数 When (?) 的 Django 查询

javascript - 全选复选框不起作用,因为它必须起作用

Django动态表单ValidationErorr

python - django.db.utils.IntegrityError : duplicate key value violates unique constraint "spirit_category_category_pkey" 错误

django - 缺少Django Admin Widget搜索权限和组

javascript - 切换滑动按钮在数据表中丢失位置

javascript - JQuery 计算子元素的宽度

django - 在 Django 中编辑对象时,未填充 ImageField

django - 在 django 时间字段中将输入设置为 AM PM