[pyar] Consulta Django (Forms)

Lucas Liendo mindmaster en gmail.com
Dom Abr 3 20:14:34 ART 2016


Hola Martin ! Es que justamente ese es el tema, el proceso en teoria seria
sencillo, el problema es decidir cuanto guardar de un Form (es decir
cuantos o que atributos guardar de la definicion de una clase que hereda de
Form). En principio pareceria que solamente con inspeccionar los atributos
de clase seria suficiente, pero no se si por ejemplo deberia inspeccionar
la clase Form de Django (o la cadena de superclases por atributos
adicionales)...

2016-04-04 5:47 GMT+10:00 Martìn Castro <martincastro.10.5 en gmail.com>:

> Probaste guardando el imput delbusuario en una base de datos y luegp
> usando esa base de datos como input de FormBuilder? Cada vez qe quisieras
> instanciar el formulario tendrías que hacer un qiery a esos datos.
>
>
>
> Sent via the Samsung Galaxy S® 6 edge, an AT&T 4G LTE smartphone
> -------- Original message --------
> From: Lucas Liendo <mindmaster en gmail.com>
> Date: 02/04/2016 11:48 PM (GMT-03:00)
> To: Python Argentina <pyar en python.org.ar>
> Subject: Re: [pyar] Consulta Django (Forms)
>
> Le voy a pegar una mirada tanto a django-forms-builder como a inspect ! De
> todas formas si alguien tiene mas ideas acerca de esto, mas que bievenido !
> Muchisimas gracias !
>
> On Friday, April 1, 2016, Daniel <dmlistapython en gmail.com> wrote:
>
>> 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
>>
>
>
> --
>
> 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
>



-- 

Saludos,
Lucas.

Radar : http://radar-monitoring.readthedocs.org/en/latest/index.html
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20160404/3be2e6cc/attachment-0001.html>


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