How does one pre-populate a Formish form? The obvious method as per the documentation doesn't seem right. Using one of the provided examples:
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')
If we pass this a valid request object:
form.validate(request)
The output is a structure like this:
{'myStruct': {'a': 'value', 'b': 0 }}
However, pre-populating the form using defaults
requires this:
form.defaults = {'myStruct.a': 'value', 'myStruct.b': 0}
The dottedish
package has a DottedDict
object that can convert a nested dict to a dotted dict, but this asymmetry doesn't seem right. Is there a better way to do this?
No, don't require to use dotted dict, you can easily use the post-validate style dict to pre-populate the form:
form.defaults={'myStruct': {'a': None, 'b': 'default_value'}}
maybe have old version of formish, try update the libs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With