gpt4 book ai didi

django - 带有 SelectMultiple 小部件的 MultipleChoiceField "Value [...] not a valid choice."

转载 作者:行者123 更新时间:2023-12-02 06:23:56 26 4
gpt4 key购买 nike

我在我的模型中定义了一个字段-

    languages = models.CharField(max_length = 30, choices=LANGUAGE_CHOICES, blank = True, null = True)

选择很简单-

LANGUAGE_CHOICES = (
('English', 'English'),
)

我在这个模型上定义了一个 ModelForm 并覆盖了字段-

languages = forms.MultipleChoiceField(choices=LANGUAGE_CHOICES, widget=forms.SelectMultiple)

当我填写表格,选择“English”,并尝试提交时,出现错误-

语言
值 u[u'English']"不是有效的选择

我做错了什么基本的事情吗?还是将 MultipleChoiceField 与 SelectMultiple 小部件结合使用不是可行的方法?

还有,为什么选择元组不能两次具有相同的值,就像我现在拥有的一样('English','English')?

这里有一些额外的代码,可能有助于深入了解这个问题

模板代码:

<div class="abovepad">
<label for="id_languages">Languages:</label>
{{form.languages}}
</div>

带有语言的 POST 数据部分:

u'languages': [u'English'],

ModelForm 代码的相关片段:

class ProfileForm(forms.ModelForm):        
languages = forms.MultipleChoiceField(choices=LANGUAGE_CHOICES)
class Meta:
model = Student

如您所见,我几乎没有定制任何东西。过去,当我遇到这个问题时,我会切换到将列表中的项目制作为模型,然后使用不会导致相同问题的 ManyToMany 字段。对于这些情况,让项目成为模型是有意义的;在这种情况下它没有。我只想知道我是否做错了什么,或者这个组合是否不应该起作用。如果没有真正的答案,那么我的另一个选择是尝试深入挖掘 Django 表单代码,看看它为什么会这样做。

最佳答案

您必须从您的模型定义中删除choices=LANGUAGE_CHOICES:您的表单返回的是所选值的列表,您的 models.LANGUAGE_CHOICES

中不存在该列表

关于django - 带有 SelectMultiple 小部件的 MultipleChoiceField "Value [...] not a valid choice.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4199019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com