【发布时间】:2011-05-11 02:03:25
【问题描述】:
我的模型中定义了一个字段-
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)
当我填写表格时,选择“英文”,然后尝试提交,我得到一个错误-
语言
值 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相关sn-p代码:
class ProfileForm(forms.ModelForm):
languages = forms.MultipleChoiceField(choices=LANGUAGE_CHOICES)
class Meta:
model = Student
如你所见,我几乎没有定制任何东西。过去,当我遇到这个问题时,我会切换到将列表中的项目转换为模型,然后使用不会导致相同问题的 ManyToMany 字段。对于这些情况,让项目成为模型是有意义的;在这种情况下它没有。我只想知道我是否做错了什么,或者这个组合是否应该起作用。如果没有真正的答案,那么我的另一个选择是尝试挖掘 Django 表单代码,看看它为什么会这样做。
【问题讨论】:
标签: django forms select django-models field