带有多个复选框的挂架/ Formencode

时间:2009-10-14 08:38:45

标签: python validation pylons formencode

今天在验证多个复选框时遇到了Pylons / Formencode的一些问题。作为一点背景,我在我的Mako模板中有类似的东西:

<input type="checkbox" name="Project" value="1">Project 1</input>
<input type="checkbox" name="Project" value="2">Project 2</input>
<input type="checkbox" name="Project" value="3">Project 3</input>
<input type="checkbox" name="Project" value="4">Project 4</input>
<input type="checkbox" name="Project" value="5">Project 5</input>

在我的验证架构中,我有类似的东西(请原谅任何错误 - 我没有确切的代码在我面前):

Project = formencode.foreach.ForEach(formencode.validators.Int())

我原本希望得到一个已检查项目的清单(听起来合理,对吧?)但是我得到了一个包含单个项目的清单,尽管检查了所有的方框。我这样做错了还是我想要回来甚至可能?我用onclicks为每个复选框项写了一个hack,它将选中的项附加到一个数组,然后以JSON格式发回 - 这很难看,因为如果验证失败,我必须自己重新填充所有字段。

有人有什么想法吗?

2 个答案:

答案 0 :(得分:2)

可能正在使用formencode.validators.Set

>>> Set.to_python(None)
[]
>>> Set.to_python('this')
['this']
>>> Set.to_python(('this', 'that'))
['this', 'that']
>>> s = Set(use_set=True)
>>> s.to_python(None)
set([])
>>> s.to_python('this')
set(['this'])
>>> s.to_python(('this',))
set(['this'])

答案 1 :(得分:0)

redrockettt,

你看过docstring到variabledecode吗?它建议你使用类似的东西:

<input type="checkbox" name="Project-1" value="1">Project 1</input>
<input type="checkbox" name="Project-2" value="2">Project 2</input>
<input type="checkbox" name="Project-3" value="3">Project 3</input>

查看variabledecode.py中的文字,或粘贴here