如何预先填充Python Formish表单?

7 投票
1 回答
549 浏览
提问于 2025-04-15 22:00

怎样才能让一个Formish 表单预先填充数据呢?根据文档上说的,最明显的方法似乎不太对。我们来看一个提供的例子:

import formish, schemaish
structure = schemaish.Structure()
structure.add( 'a', schemaish.String() )
structure.add( 'b', schemaish.Integer() )
schema = schemaish.Structure()
schema.add( 'myStruct', structure )
form = formish.Form(schema, 'form')

如果我们传入一个有效的请求对象:

form.validate(request)

输出的结构大概是这样的:

{'myStruct': {'a': 'value', 'b': 0 }}

不过,想要用 defaults 来预填充表单,需要这样做:

form.defaults = {'myStruct.a': 'value', 'myStruct.b': 0}

dottedish 这个包里有一个 DottedDict 对象,可以把嵌套的字典转换成点状字典,但这种不对称的方式似乎不太合理。有没有更好的方法呢?

1 个回答

1

不,没必要使用点号字典,你可以很简单地用后验证风格的字典来预先填充表单:

form.defaults={'myStruct': {'a': None, 'b': 'default_value'}}

可能你用的是旧版本的formish,试着更新一下库。

撰写回答