如何在app引擎上创建一个多选表单字段

时间:2010-02-05 15:20:18

标签: python google-app-engine django-forms

我正在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')])

1 个答案:

答案 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():
     [...]