wtforms中的FieldList和验证问题

1 投票
1 回答
1468 浏览
提问于 2025-04-16 19:49

关于wtforms的FieldList和验证的问题……

应该提示说这个字段必须是整数值,而不是“这个字段是必填的”。

为什么f.data的值是[None, 2, None],而不是['def', 2, 'abc']呢?

from webob.multidict import MultiDict

from wtforms import Form
from wtforms import FieldList, IntegerField
from wtforms import validators

class SearchForm(Form):
    locality_id = FieldList(IntegerField(u'Locality', [validators.Required()]))


d = MultiDict([('locality_id-0', 'def'), ('locality_id-1', 2), ('locality_id-2', 'abc')])

f = SearchForm(d)

print f.validate()
print f.errors
print f.data
print f.locality_id.data

% python form_test.py

False

{'locality_id': [[u'这个字段是必填的。'], [u'这个字段是必填的。']]}

{'locality_id': [None, 2, None]}

[None, 2, None]

1 个回答

1

看起来在 IntegerField 的继承结构中,有一个 try... except 的代码块,这个代码块会把所有不是整数的值放到 process_errors 这个属性里。而这个类特别不允许你用无效的数据来填充。尽管如此,我相信你还是可以在 raw_data 这个属性中找到你想要的值。

撰写回答