Menú superior

Ir al contenido
Inicio
    Módulos
      • Proyectos
      • Actividad
      • Paquetes de trabajo
      • Diagramas de Gantt
      • Noticias
    • Primeros pasos
    • Vídeo de introducción
      Bienvenido a OpenProject
      Obtenga un resumen rápido sobre la gestión de proyectos y la colaboración en equipo con OpenProject. Puedes volver a ver este video des del menú de ayuda.

    • Ayuda y soporte
    • Actualizar a Enterprise
    • Guia de usuario
    • Vídeos
    • Accesos directos
    • Foro de Community
    • Soporte empresarial

    • Recursos Adicionales
    • Política de privacidad y seguridad de datos
    • Accesibilidad digital (DE)
    • Sitio web de OpenProject
    • Alertas de seguridad / boletín
    • Blog de OpenProject
    • Notas de lanzamiento
    • Informa de un fallo
    • Hoja de ruta de desarrollo
    • Añadir y editar traducciones
    • Documentación de la API
  • Ingresar
      Crear una nueva cuenta
      Contraseña perdida

Menú lateral

  • Resumen
  • Actividad
    Actividad
  • Wiki
    Wiki
    • 💼 Área de Consultoría
  • Noticias

Contenido

Usted está aquí:
  1. Wiki
  2. 🛠️ Área Técnica
  3. Uso de UserError y ValidationError en Odoo

Uso de UserError y ValidationError en Odoo

  • Más
    • Imprimir
    • Índice

En Odoo, tanto UserError como ValidationError se utilizan para mostrar mensajes de error al usuario, pero se usan en contextos diferentes y tienen comportamientos ligeramente distintos. Aquí te detallo cuándo usar cada uno:

UserError

¿Cuándo usarlo?

  • Errores de uso o restricciones de negocio: Cuando quieras informar al usuario sobre un error relacionado con el flujo de trabajo o una restricción de negocio que debe corregir antes de continuar.
  • Errores comprensibles por el usuario final: Si el mensaje está destinado a ser leído y entendido por el usuario final (por ejemplo, un mensaje como "No puedes confirmar esta orden porque el inventario es insuficiente").
  • Mensajes más flexibles: UserError es más flexible para mostrar mensajes personalizados y amigables para el usuario.

Ejemplo:

from odoo.exceptions import UserError

if some_condition_is_not_met:
    raise UserError("No puedes realizar esta acción porque no cumples con el requisito X.")

¿Qué hace?

  • Muestra un mensaje emergente con el texto especificado.
  • No interrumpe otros procesos o validaciones; simplemente informa al usuario y le permite corregir el error.

ValidationError

¿Cuándo usarlo?

  • Validación de datos en el ORM: Cuando quieras validar datos antes de que se guarden en la base de datos, especialmente en el método create o write.
  • Restringir cambios en registros: Si deseas detener la operación de guardado y no permitir que continúe hasta que el usuario corrija el error (por ejemplo, validar que un campo no esté vacío o que un valor esté dentro de un rango específico).
  • Validaciones críticas de modelo: Se utiliza principalmente en los métodos @api.constrains y @api.onchange para asegurar la integridad de los datos.

Ejemplo:

from odoo.exceptions import ValidationError
from odoo import models, fields, api

class MyModel(models.Model):
    _name = 'my.model'

    amount = fields.Float(string="Monto")

    @api.constrains('amount')
    def _check_amount(self):
        for record in self:
            if record.amount < 0:
                raise ValidationError("El monto no puede ser negativo.")

¿Qué hace?

  • Interrumpe el flujo de guardado: Si se lanza un ValidationError, la transacción se revierte y el registro no se guarda en la base de datos.
  • Muestra el mensaje de error en la vista de formulario y destaca el campo relacionado con el error (si aplica).

Resumen de Diferencias

Característica UserError ValidationError
Contexto de uso Errores de uso, restricciones de negocio. Validación de datos antes de guardar en la DB.
Comportamiento Muestra un mensaje emergente. Interrumpe el guardado y revierte la transacción.
Dónde usarlo En métodos de acción o lógica de negocio. En @api.constrains, @api.onchange, create, write.
Visibilidad Visible en un pop-up para el usuario final. Visible en la vista de formulario y destaca el campo afectado.

¿Cuándo elegir uno u otro?

  • Usa `` cuando: Quieras mostrar un mensaje informativo o de advertencia sin detener por completo el flujo de trabajo.
  • Usa `` cuando: Necesites asegurarte de que los datos sean válidos antes de guardarlos en la base de datos o quieras detener una operación hasta que se corrija el error.
Cargando...