我在我的模型 - 定義一個字段帶有SelectMultiple小部件的MultipleChoiceField「值不是有效的選擇。」
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)
當我填寫表格,選擇「英文」,然後嘗試提交,我收到一條錯誤消息 -
languages
Value u「[u'English']」不是一個有效的選擇
有沒有什麼基本的我做錯了?或者,與SelectMultiple小部件結合的MultipleChoiceField不是一種好的方式嗎?
另外,是否有任何理由爲什麼選擇元組不能有兩次相同的值,就像我現在擁有它('英語','英語')?
下面是一些額外的代碼,可能在獲得這一
模板代碼底部有用:
<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表單代碼,看看它爲什麼要做它的事情。
感謝喬丹,您的及時答覆。我發佈了上面的相關信息。我的ModelForm不包括任何額外的東西,並且擺脫顯式的小部件參數很不幸沒有幫助。在我看來,由於某種原因,Django表單驗證代碼將POST數據中的數組轉換爲字符串... – dpetters 2010-11-17 18:30:11