Cargando



Django - Campos Personalizados

En este tutorial veremos como crear los campos personalizados, en Django, además de crear sus validaciones necesarias a través del método clean().


abr 14 2014 01:39
Profesional
abr 17 2014 21:25
Tenemos una gran selección de tipos de campos cuando trabajamos con los formularios en Django, sin embargo llega un momento en el que necesitamos una validación o definir un nuevo comportamiento, para ello podemos personalizar nuestros campos sin problemas utilizando los métodos de Django.forms.

La ventaja de trabajar con los campos personalizados en los formularios, es que no debemos preocuparnos en su compatibilidad con múltiples backends como si deberíamos preocuparnos cuando creamos un nuevo tipo de campo en el modelo.

Campos Personalizados

Un campo personalizado en el formulario nos permite generar soporte para tipos de ingreso de datos que no existen en la gran cantidad de opciones que nos ofrece Django, gracias a esto podemos conseguir resultados más personalizados y que ayudan a nuestra aplicación a lograr cumplir de mejor manera nuestros objetivos.

¿Cómo crearlos?
Para lograr crear un campo personalizado este debe heredar de la clase Fields incluida en Django.forms, de esta forma garantizamos su correcto funcionamiento dentro del formulario; otro aspecto que ya habíamos mencionado es que este tipo de campos es más sencillo de implementar ya que no necesitamos tener en cuenta el trabajo con diferentes backends, es decir, con múltiples bases de datos como lo sería en un modelo, esto se debe a que solo evaluaremos datos tipo string en el formulario cuando el usuario ingresa datos.


Validación

Este es quizás el aspecto fundamental en la generación de nuevos campos, ya que al definir un tipo de validación podemos establecer el tipo de campo, debido a que la validación es la que le dará el carácter único a dicho campo.

¿Cómo incluir una validación?
Para incluir una validación debemos recurrir al método clean(), dicho método acepta el objeto propio de la clase y el valor en evaluación, luego según los estándares que hayamos creado este método es capaz de discernir entre los datos ingresados y si cumplen o no con nuestra validación, en caso de no hacerlo podrá levantar una excepción y enviar un mensaje de error que hayamos establecido.


Veamos en la siguiente imagen un código donde se generan dos nuevos tipos de campos personalizados:

django_campos_person.jpg


Acá vemos como aplicamos todo lo que hemos venido hablando, primero hacemos el import de fields dentro de Django.forms ya que es la clase que necesitamos utilizar, luego creamos una clase que va a heredar en este caso de fields.DecimalField, esto nos deja entendido que nuestro nuevo campo será numérico.

Luego definimos un error llamado out_of_range, esto nos sirve para cuando levantemos una excepción al momento de validar la data poder mostrar un mensaje que guie al usuario; esto nos da la oportunidad de poder tener diferentes tipos de mensajes para diferentes errores.

Importante
Por último sobrescribimos el método clean dentro de cada clase nueva de forma que podamos elaborar la nueva validación, primero utilizamos el método super().clean() con esto llamados al método clean() de la clase fields.DecimalFields con esto logramos validar que sean un tipo numérico correcto antes de evaluar nuestra propia validación, lo que nos ahorra tener que ubicar una validación del tipo de dato ingresado, aquí se nota la ventaja de heredar.


Por último validamos con nuestras condiciones y si no se cumplen levantamos el error; así ya hemos creado un campo personalizado.

Con esto finalizamos el tutorial contando con una herramienta adicional que nos permite hacer aplicaciones que estén más cercanas de nuestras necesidades.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X