我正在app Engine上构建一个应用程序,我想创建一个包含多个选项的表单字段 这是我的表单(它使用app引擎sdk(django 0.96)中的django.newforms):
from google.appengine.ext.db import djangoforms
from django import newforms
class KeywordForm(djangoforms.ModelForm):
class Meta:
model = Keyword
exclude = ['site', 'created_at', 'last_update']
choices = [ (1, 'value1'), (2, 'value2'), (3, 'value3'), (4, 'value4') ]
server = newforms.fields.MultipleChoiceField(choices = choices)
问题是:当我提交表单(选择了一个或多个值)时,我发现此验证错误:“输入值列表。”
我不明白为什么......对此问题的一些帮助将非常感激 谢谢 ! :)
编辑(额外信息):
这是表单验证代码:
form = forms.KeywordForm(data=self.request.POST)
if form.is_valid():
...
self.request.POST:
UnicodeMultiDict([(u'keyword', u'test'), (u'server[]', u'1'), (u'server[]', u'2')])
答案 0 :(得分:2)
我找到了解决方案!
问题是 self.request.POST dictionnary提供给我的表单的构造函数。
MultipleChoiceField.clean()函数不理解它的格式,所以我对它进行了转换。
以下是工作验证码:
args = self.request.arguments()
data = {}
for i in args:
data[i] = self.request.get_all(i)
form = forms.KeywordForm(data=data)
if form.is_valid():
[...]