我有一个表示美国州的MultipleChoiceField,并将GET请求传递给我的表单?state=AL%2CAK
会导致错误:
Select a valid choice. AL,AK is not one of the available choices.
但是,这些值肯定会在字段选项中列出,因为它们会在表单字段中正确呈现。
我已经尝试在表单中指定自定义的clean_state()方法,将值转换为列表,但这没有任何效果。打印cleaning_data ['state']似乎表明它甚至没有被来自request.GET的数据调用。
导致此错误的原因是什么?
from django import forms
class MyForm(forms.Form):
state = forms.MultipleChoiceField(
required=False,
choices=[('AL','Alabama'),('AK','Alaska')],
)
答案 0 :(得分:0)
MultipleChoiceFields不会传递列表中的所有选定值,而是为同一个键传递几个不同的值。
换句话说,如果您选择' AL'和' AK'您的查询字符串应为?state=AL&state=AK
而不是?state=AL%2CAK
。
如果没有看到您的自定义clean_state()
方法,我就无法告诉您它出了什么问题,但是如果状态字段因为查询字符串错误而无效,则#&#&#t} 39;状态'不会在cleaning_data中(因为cleaning_data只保存有效数据)。
希望这会有所帮助。如果您仍然陷入困境,请尝试添加更多详细信息,我可以尝试更具体。