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.
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.
Veamos en la siguiente imagen un código donde se generan dos nuevos tipos de campos personalizados:
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.
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.