[pyar] Consulta Django (Forms)

Martìn Castro martincastro.10.5 en gmail.com
Dom Abr 3 16:47:28 ART 2016


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 at gmail.com> Date: 02/04/2016  11:48 PM  (GMT-03:00) To: Python Argentina <pyar at 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 at 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 at 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 at 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


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20160403/48299409/attachment.html>


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