NOT NULL, UNIQUE y CHEK 🛡️ ¡Evita Inconsistencias! Restringe Valores con _sql_constraints en Odoo
¿Qué son los constraints en Odoo?
Introducción a los Constraints
- Josué presenta el tema de las restricciones (constraints) en Odoo, explicando su importancia para evitar la entrada de datos incorrectos.
- Se mencionan algunas restricciones comunes, como prevenir campos vacíos y valores duplicados, así como inconsistencias en los datos.
Uso de SQL y Python para Constraints
- Se discute que Odoo permite definir restricciones tanto mediante SQL como a través de Python, siendo más común el uso de Python.
Definición de Constraints en SQL
- Las restricciones en SQL se definen usando el atributo
sql_constraintsdel modelo. Este requiere una lista con tres valores: nombre, definición SQL y mensaje.
- El argumento
namedebe estar en minúsculas y separado por guiones bajos;sql_definitiones una expresión válida de PostgreSQL;messagees el mensaje que se mostrará si la restricción no se cumple.
Estructura Básica para Declarar un Constraint
- La estructura básica incluye declarar el atributo
sql_constraints, seguido por una lista con los tres argumentos necesarios.
- Un ejemplo práctico muestra cómo usar un constraint tipo
checkpara asegurar que un campo porcentaje esté entre 0 y 100.
Ejemplo Práctico de Implementación
- Se presenta un modelo básico con dos campos: name y number. Se añaden varias restricciones utilizando
sql_constraints.
- La primera restricción asegura que el campo name no sea nulo; si lo es, se lanza un mensaje específico indicando que "el nombre no puede estar vacío".
Validaciones Adicionales
- Otra restricción verifica que el campo number sea mayor o igual a cero; si no se cumple, aparece un mensaje indicando que "el número esperado debe ser positivo".
- También se establece una restricción para garantizar que el campo name sea único. Si hay duplicados, se muestra un error correspondiente.
Resultados de las Restricciones Aplicadas
- Al intentar guardar registros con datos inválidos (como campos vacíos o números negativos), aparecen mensajes claros sobre qué restricciones no se cumplieron.
- Finalmente, al ingresar correctamente todos los datos requeridos, el registro puede guardarse sin problemas.
Acceso a las Restricciones en Odoo
Restricciones SQL en Odoo
Tipos de restricciones en Odoo
- En la interfaz de Odoo, se pueden ubicar dos tipos de restricciones SQL: las de tipo F (llave foránea) y las de tipo U (otro tipo de restricciones).
- Las restricciones se crean concatenando el nombre del modelo y el nombre de la restricción, separados por guiones bajos. Esto es automático y predeterminado para cualquier modelo.
Creación automática de restricciones
- Al crear un modelo, Odoo genera automáticamente dos restricciones SQL:
create_uidpara la llave foránea ywrite_uidpara actualizaciones.
- Para el modelo "clasificación por tipo de tarea", se observan dos restricciones F generadas automáticamente, además de tres restricciones U que no son llaves foráneas.
Nombres y atributos en Python
- Los nombres de las restricciones U incluyen el nombre del modelo concatenado con el nombre especificado en el código Python. Por ejemplo,
name_not_null.