dpe*_*ers 2 forms django select field django-models
我的模型中定义了一个字段 -
languages = models.CharField(max_length = 30, choices=LANGUAGE_CHOICES, blank = True, null = True)
Run Code Online (Sandbox Code Playgroud)
选择很简单 -
LANGUAGE_CHOICES = (
('English', 'English'),
)
Run Code Online (Sandbox Code Playgroud)
我在这个模型上定义了一个ModelForm并覆盖了该字段 -
languages = forms.MultipleChoiceField(choices=LANGUAGE_CHOICES, widget=forms.SelectMultiple)
Run Code Online (Sandbox Code Playgroud)
当我填写表格时,选择"英语",并尝试提交,我收到错误 -
语言
价值u"[u'English']"不是一个有效的选择
有什么基本的我做错了吗?或者,MultipleChoiceField与SelectMultiple小部件结合使用的方式不是很好吗?
另外,有没有理由为什么选择元组不能两次具有相同的值,就像我现在拥有的那样('英语','英语')?
这里有一些额外的代码可能有助于深入了解这一点
模板代码:
<div class="abovepad">
<label for="id_languages">Languages:</label>
{{form.languages}}
</div>
Run Code Online (Sandbox Code Playgroud)
具有以下语言的POST数据部分:
u'languages': [u'English'],
Run Code Online (Sandbox Code Playgroud)
ModelForm代码的相关片段:
class ProfileForm(forms.ModelForm):
languages = forms.MultipleChoiceField(choices=LANGUAGE_CHOICES)
class Meta:
model = Student
Run Code Online (Sandbox Code Playgroud)
如你所见,我几乎没有定制任何东西.在我遇到这个问题的过去,我会切换到列表中的项目为模型,然后使用ManyToMany字段,这不会导致相同的问题.对于那些情况,让项目成为模型是有意义的; 在这种情况下它没有.我只是想知道我做错了什么,或者这个组合是不是应该工作.如果没有真正的答案,那么我的另一个选择就是尝试挖掘Django表单代码,看看它为什么要这样做.
小智 8
您必须choices=LANGUAGE_CHOICES从模型 定义中删除:您的表单返回的是所选值的列表,该列表中不存在models.LANGUAGE_CHOICES