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. 📘 Lecciones aprendidas
  4. Cuidado con mezclar campos computados almacenados y no almacenados

Cuidado con mezclar campos computados almacenados y no almacenados

  • Más
    • Imprimir
    • Índice

Contexto:
Durante el desarrollo del proyecto de Bolipuertos, se implementó un método computado que actualizaba varios campos del modelo. Estos campos estaban definidos con @api.depends correctamente, pero no todos eran iguales: algunos estaban marcados con store=True, otros no.

Qué salió mal:
El método computado no se ejecutaba automáticamente como se esperaba cuando cambiaban los valores de los campos dependientes. Solo se disparaba si se recargaba manualmente la vista, lo cual provocaba que los valores se vieran inconsistentes o simplemente no se actualizaran a tiempo.

Causa raíz:
Odoo no ejecuta automáticamente métodos computados no almacenados (**store=False**) en el backend a menos que haya una interacción directa con la vista o el frontend. Además, al combinar campos store=True y store=False que dependen del mismo método, se genera un comportamiento impredecible.
El @api.depends no puede controlar correctamente los triggers si los campos no están sincronizados en su política de almacenamiento.

Solución o recomendación:

  • Evitar mezclar campos computados **store=True** y **store=False** con el mismo método.

  • Separar los métodos si es necesario: uno para campos almacenados, otro para no almacenados.

  • Si se requiere una actualización visual inmediata en la vista, considerar el uso de @api.onchange para campos no almacenados.

  • Siempre validar que el método se ejecute correctamente en escenarios reales, no solo al editar desde el frontend.

Responsable del aprendizaje:
Jose Daniel Mancilla

Fecha del aprendizaje:
2025-03-15


🧪 Nota técnica: Cuando un campo no es store=True, su método computado solo se ejecuta en cliente (vista/formulario). Odoo no lo calcula automáticamente en el backend durante operaciones como creación, escritura o cargas masivas. Eso lo convierte en un ninja invisible cuando más lo necesitas.

Cargando...