2010-04-26 9 views
7

¿Cómo se puede rellenar previamente un formulario Formish? El método obvio según la documentación no parece correcto. Utilizando uno de los ejemplos proporcionados:¿Cómo se puede rellenar previamente un formulario de Python 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') 

Si pasamos esta un objeto de la solicitud válida:

form.validate(request) 

La salida es una estructura como esta:

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

Sin embargo, pre-poblar el formulario que usa defaults requiere esto:

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

El paquete dottedish tiene un objeto DottedDict que puede convertir un dict anidado en un dict punteado, pero esta asimetría no parece correcta. ¿Hay una mejor manera de hacer esto?

Respuesta

1

No, no requieren el uso de puntos dict, se puede utilizar fácilmente el estilo post-dict Validar para rellenar previamente el formulario:

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

tiene quizá versión antigua de formish, intente actualizar las librerías .

Cuestiones relacionadas