@api.constrains 🛑 ¡Lo Que Tienes Que Saber! Restricciones Python Odoo | Ejemplo date y UNIQUE name
¿Cómo utilizar restricciones en Python?
Introducción a los constraints
- Josué presenta el tema del video: el uso de restricciones (constraints) en Python para evitar que los usuarios ingresen datos incorrectos.
- Se mencionan las restricciones comunes, como prevenir campos vacíos, valores no deseados y la repetición de valores.
Importancia de las restricciones
- Las restricciones ayudan a prevenir inconsistencias en los datos dentro del modelo.
- Se explican dos métodos para implementar constraints: mediante SQL y código Python; este video se centrará en el segundo.
Implementación de constraints en Python
- Para usar el decorador
@api.constrains, es necesario definir los campos involucrados. La validación se activa al modificar estos campos.
- El método debe lanzar una excepción (
ValidationError) si alguna validación falla. Los nombres de campos relacionales no son compatibles con este decorador.
Estructura básica para declarar una restricción
- Se muestra cómo importar
ValidationErrory utilizar el decorador@api.constrainscon uno o más campos.
- Un ejemplo práctico involucra validar fechas al modificar un campo específico.
Ejemplo práctico: Validación única de nombres
- Se discute un inconveniente donde Odoo considera diferentes registros basados en mayúsculas/minúsculas, permitiendo duplicados.
- Para abordar esto, se crea un método llamado
check_unique_nameque ignora diferencias entre mayúsculas y minúsculas al validar nombres.
Proceso de validación
- El método consulta todos los registros excluyendo el ID actual y compara nombres convertidos a minúscula.
- Si se encuentra un nombre duplicado (sin considerar mayúsculas), se lanza un
ValidationError.
Resultados de la implementación
- Al probar la restricción, se observa que Odoo permite guardar registros duplicados hasta que se implementa la validación en Python.
- Con la nueva restricción, intentar guardar un registro duplicado genera un error de validación efectivo.
Conclusión sobre las ventajas del uso de código Python para restricciones