[pyar] Consulta Django (Forms)

Daniel dmlistapython en gmail.com
Vie Abr 1 07:42:25 ART 2016


tiro una idea sin pensarlo mucho... ¿inspect?

https://docs.python.org/2/library/inspect.html#retrieving-source-code

El 1 de abril de 2016, 0:52, Lucas Liendo <mindmaster en gmail.com> escribió:

> Buenas ! Les queria hacer un consulta un poco rebuscada (tiene una
> justificacion esta complicacion). Supongamos que tenemos un formulario :
>
> class CustomForm(forms.Form):
>     name = forms.CharField()
>     last_name = forms.CharField()
>     ....
>
> La consulta que queria compartir con Uds es la siguiente. Supongamos que
> necesitamos darle al usuario de nuestra aplicacion la habilidad de diseniar
> formularios, es decir que nuestro formulario no estaria predefinido de
> antemano (asumo que hay alguna ui en el navegador que me deja elegir el
> nombre del campo y su tipo). Hasta aca sin problemas porque mi controlador
> podria usar un FormBuilder como el siguiente que se encarga de construir
> formularios de forma arbitraria (nos devuelve una clase que hereda de Form)
> asi que en principio podria crear formularios de forma arbitraria :
>
> class FormBuilder(object):
>     def __init__(self, class_name):
>         self.Class = type(class_name, (forms.Form,), {})
>         self.fields = []
>
>     def add_fields(self, fields):
>         self.fields.extend(fields)
>         return self
>
>     def build(self):
>         [setattr(self.Class, field_name, FieldClass(*args, **kwargs)) for
> field_name, FieldClass, args, kwargs in self.fields]
>         return self.Class
>
> Por ejemplo si quisiera construir el formulario del ejemplo inicial
> podriamos usar el FormBuilder asi (ojo que este codigo y el de arriba son
> solo ideas, pueden tener errores) :
>
> CustomForm = FormBuilder('CustomForm').add_fields([
>     ('name', CharField, (), {}),
>     ('last_name', CharField, (), {}),
> ]).build()
>
> En algun momento, es necesario guardar el formulario para luego poder
> renderearlo. Mi duda viene justamente por este lado. Me gustaria poder
> serializar por ejemplo la clase CustomForm (posiblemente a un JSON, aclaro
> que necesito serializar la clase y NO una instancia de la misma), guardar
> este JSON y luego dinamicamente ir regenerando cada uno de los formularios
> que el usuario creo desde un controlador para finalmente renderealos a una
> vista. Estuve buscando un poco acerca de esto y no pude encontrar mucha
> informacion. Alguien alguna vez necesito realizar algo similar ? No tengo
> basta experiencia en Django, pero si tuviera que hacer esta serializacion
> manualmente creo que se tornaria (creo) compleja...
>
> Por ahi la forma en que estoy pensando como resolver este problema no es
> la mas adecuada, pero por el momento es lo unico que se me ocurrio.
>
> Desde ya muchisimas gracias !
>
>
> --
>
> Saludos,
> Lucas.
>
> Radar : http://radar-monitoring.readthedocs.org/en/latest/index.html
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>



-- 
Daniel Malisani
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20160401/8d66847e/attachment-0001.html>


Más información sobre la lista de distribución pyar