NOT NULL, UNIQUE y CHEK 🛡️ ¡Evita Inconsistencias! Restringe Valores con _sql_constraints en Odoo

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_constraints del modelo. Este requiere una lista con tres valores: nombre, definición SQL y mensaje.
  • El argumento name debe estar en minúsculas y separado por guiones bajos; sql_definition es una expresión válida de PostgreSQL; message es 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 check para 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_uid para la llave foránea y write_uid para 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.

Turn any video into a summary like this

YouTube links, meetings, lectures — with transcripts, search, and chat.

Video description

En este video te explico para qué se utilizan las Restricciones SQL dentro de Odoo. Enseño también la manera correcta de declarar la restricción SQL con el atributo _sql_constraints. Te muestro con un ejemplo práctico cómo usar IS NOT NULL, UNIQUE y CHECK para restringir valores en campos dentro de Odoo. 🎓 Curso gratuito para aprender a programar en Odoo: https://www.youtube.com/playlist?list=PLXwzJRuH--eYHB3OD2wATjzJ83UAp2WQs 🎨 ¿Quieres algo más personalizado? ¿Quieres capacitar a tu equipo de trabajo? Contáctame y platicamos... https://ko-fi.com/josuheuh/commissions 🎓 Curso gratuito API externa Odoo: https://www.youtube.com/playlist?list=PLXwzJRuH--eZn0SMw79wDSVlFT0Qtcn9j 🌐 Conéctate fácilmente a través de la API de Odoo usando este Script 👇: https://ko-fi.com/s/0466aa2700 ☕️ Apoya a este canal con un Café: https://ko-fi.com/josuheuh 00:00 Introducción 00:09 ¿Qué son y para qué usarlo? 00:55 Declaración: SQL Constraints 03:13 Ejemplo práctico _sql_constraints 05:09 Funcionamiento: Restricción SQL 07:12 Consultar Restricciones SQL desde Odoo