如何在应用引擎上制作多选表单字段
我正在使用应用引擎开发一个应用程序,想要创建一个可以选择多个选项的表单字段。
这是我的表单(它使用的是来自应用引擎SDK的django.newforms(django 0.96)):
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')])
1 个回答
2
我找到了解决办法!
问题出在我给表单构造函数传递的 self.request.POST 字典上。
这个字典的格式不被 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():
[...]