[pyar] Consulta Django (Forms)
Gonzalo
mail en gonzalodelgado.com.ar
Vie Abr 1 07:21:32 ART 2016
El 1/4/16 a las 12:52 a.m., Lucas Liendo 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 !
Creo que esta app hace lo que necesitás:
http://django-forms-builder.readthedocs.org/en/stable/ :-)
--
Gonzalo
Más información sobre la lista de distribución pyar