Ir al contenido

Campo Boolean en Odoo: Guía Completa y Práctica

Guía práctica sobre el campo Boolean en el modelo de datos de Odoo: qué hace un checkbox, cómo se comporta en formularios y vistas, y qué opciones técnicas tienes para personalizar su funcionamiento
6 de marzo de 2026 por
Campo Boolean en Odoo: Guía Completa y Práctica
Dasolo
| Sin comentarios aún

Introducción


El campo Boolean es uno de los tipos más sencillos y a la vez más omnipresentes en Odoo. Cada vez que marcas una casilla en un pedido de venta, activas o desactivas un cliente, o señalas un producto como favorito, estás manipulando un campo Boolean.


Aunque su comportamiento parezca evidente, conviene entender sus matices. Saber cuándo aplicarlo, cuándo elegir otra opción y cómo configurarlo correctamente evita implementaciones desordenadas y fallos que, incluso en equipos con experiencia, suelen repetirse.


Esta guía aborda el campo Boolean desde la práctica: qué datos guarda, cómo se comporta en el modelo y en las vistas, formas sencillas de crearlo con Studio o código Python, ejemplos de negocio y consejos concretos para explotarlo sin sorpresas.

¿Qué es el campo Boolean en Odoo?


En el ORM de Odoo, un Boolean almacena uno de dos estados: True o False. En la base de datos PostgreSQL se refleja como una columna BOOLEAN. No hay valores intermedios: la casilla está marcada o no, activada o desactivada.


Para el usuario, un Boolean suele mostrarse como una casilla de verificación en los formularios. En las vistas de lista aparece normalmente un icono de marca cuando es True y nada cuando es False. En algunos casos se renderiza como un interruptor según el widget aplicado.


A continuación tienes un ejemplo del patrón que se usa en un módulo Python para definir este campo.

from odoo import fields, models

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    needs_manual_review = fields.Boolean(
        string='Needs Manual Review',
        default=False,
    )

El parámetro string define la etiqueta que verá el usuario; default establece el valor inicial en la creación de registros. Aunque Odoo trata sin valor como False por defecto, es buena práctica declarar explícitamente el valor predeterminado.

En Odoo Studio este tipo aparece como Checkbox. Los campos creados por Studio reciben automáticamente el prefijo x_studio_. Si los defines vía Python o API XML-RPC, tú decides el nombre técnico.

Cómo funciona el campo


Al añadir un campo Boolean a un modelo, Odoo genera la columna correspondiente en PostgreSQL durante la instalación o actualización del módulo, sin necesidad de escribir migraciones SQL manuales.


Un detalle importante: en Odoo un campo Boolean nunca devuelve None o NULL. El ORM siempre devolverá True o False. Incluso si la columna en la base de datos no contiene valor, al leerla Odoo devolverá False, a diferencia de otros tipos donde puede aparecer None.


Atributos clave del campo

Estas son las propiedades principales que puedes ajustar en un campo Boolean dentro del framework de Odoo:

  • default: Define el valor al crear un nuevo registro. Lo habitual es False, pero puede ser True en escenarios de exclusión (opt-out).
  • compute: Asocia un método Python que calcula el valor dinámicamente. Útil para banderas derivadas a partir de otros campos.
  • store: Cuando se usa con compute, indica si el valor se guarda en la base de datos. Con store=True los Booleans calculados se pueden usar en búsquedas e informes.
  • readonly: Impide que los usuarios editen el valor en la interfaz. Ideal para flags que solo debe gestionar el sistema.
  • copy: Controla si el valor se replica al duplicar un registro. Por defecto es True. Para señales como “aprobado”, suele convenir copy=False.
  • groups: Restringe la visibilidad o edición a determinados grupos de usuarios.

Cómo se muestra en las vistas

En formularios, el Boolean se renderiza como una casilla HTML. En listas, Odoo muestra un icono de comprobación si es True y nada si es False, lo que facilita escanear grandes listados.

Puedes cambiar la presentación con widgets en la vista. El widget toggle lo transforma en un interruptor, útil para preferencias; el widget boolean_favorite lo muestra como una estrella para marcadores o favoritos.


Uso en filtros y dominios

Los Booleans son prácticos en dominios (los filtros de Odoo) para búsquedas, acciones automáticas y reglas de acceso. Un filtro para registros marcados sería:

[('needs_manual_review', '=', True)]

Dado que solo hay dos estados, las comparaciones son simples y claras:

[('needs_manual_review', '=', False)]

Esta simplicidad es la razón por la que los Boolean encajan bien en acciones automáticas, planificadas y reglas del servidor: son condiciones directas y fáciles de evaluar.


Interacción con el ORM

Leer y escribir Booleans en desarrollo Odoo es directo: accedes al atributo del registro, lo comparas con True/False y lo asignas. El ORM y la API manejan las conversiones sin complicaciones ni casos límite.

Casos de uso en la empresa


Ejemplos prácticos en distintos departamentos


CRM: ¿Lead cualificado?

Los equipos comerciales necesitan a menudo marcar si un lead ha sido validado por un responsable. Un Boolean is_qualified en el modelo de lead permite filtrar rápidamente la cartera: los leads no cualificados pueden tratarlos juniors, los cualificados reciben seguimiento prioritario, sin crear una etapa extra en el pipeline.


Ventas: pedidos que requieren revisión manual

Algunos pedidos necesitan aprobaciones adicionales (por importe, cliente nuevo, condiciones especiales). Un Boolean needs_manual_review en pedidos, combinado con una acción automatizada que lo ponga a True según reglas, crea una cola clara para finanzas u operaciones que pueden filtrar y procesar esas órdenes de forma ordenada.


Inventario: productos fuera de catálogo

Cuando un artículo deja de venderse pero debe conservarse por historial, archivarlo no siempre es la mejor opción. Un Boolean is_discontinued en la plantilla de producto indica a compras y ventas que no debe recomprarse ni ofrecerse, y puede usarse en reglas de listas de precios, validaciones de pedidos de compra y visibilidad en la tienda online.


Contabilidad: facturas que requieren atención

Para marcar facturas en disputa o con discrepancias, un Boolean under_dispute ofrece una forma estructurada de filtrar y reportar, evitando depender de notas libres. Además, se puede usar para pausar recordatorios automáticos y así no presionar pagos mientras se resuelve el problema.


RRHH: formación y certificaciones

RRHH necesita verificar que el personal haya completado formaciones obligatorias. Un Boolean en la ficha del empleado, por ejemplo safety_training_completed, permite ver de un vistazo quién falta por formar y alimentar informes de cumplimiento sin crear un módulo complejo.

Crear o personalizar el campo Boolean


Tres vías para añadir un campo Boolean en Odoo


Uso de Odoo Studio (sin código)

Odoo Studio es la herramienta low-code para personalizar sin programar. Para añadir un Boolean mediante Studio:

  1. Abre Odoo Studio desde el menú principal (se requiere la app Studio).
  2. Sitúate en el formulario donde quieres añadir el campo.
  3. Arrastra un campo Checkbox desde la barra lateral hasta el diseño del formulario.
  4. Configura la etiqueta, el valor por defecto y las restricciones de obligatorio o solo lectura en el panel de propiedades.
  5. Guarda y cierra Studio.

Studio se encarga de todo: crea el campo en la base de datos con prefijo x_studio_ y lo añade a la vista sin necesidad de reiniciar ni actualizar el módulo.


Uso de Python en un módulo personalizado

Para desarrolladores, definir Booleans en archivos Python es la vía recomendada cuando necesita control de versiones, pruebas y despliegue automatizado:

from odoo import fields, models

class ResPartner(models.Model):
    _inherit = 'res.partner'

    x_is_key_account = fields.Boolean(
        string='Key Account',
        default=False,
        copy=False,
    )

Tras definir el campo en Python, añádelo a la vista XML correspondiente para que sea visible en la interfaz; Odoo creará la columna en la base de datos al instalar o actualizar el módulo.


Para campos calculados, el patrón habitual es el siguiente:

from odoo import api, fields, models

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    is_high_value = fields.Boolean(
        string='High Value Order',
        compute='_compute_is_high_value',
        store=True,
    )

    @api.depends('amount_total')
    def _compute_is_high_value(self):
        for order in self:
            order.is_high_value = order.amount_total >= 10000

Con store=True, el valor calculado se guarda en la base de datos, lo que permite usarlo en búsquedas y agrupaciones sin recálculo constante.


Uso de la API XML-RPC

Si automatizas configuraciones o gestionas Odoo desde scripts remotos, puedes crear campos Boolean vía XML-RPC en el modelo ir.model.fields:

field_id = models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'ir.model.fields', 'create',
    [{
        'name': 'x_needs_manual_review',
        'field_description': 'Needs Manual Review',
        'model_id': model_id,
        'ttype': 'boolean',
        'state': 'manual',
    }]
)

El atributo state: 'manual' indica que el campo se creó fuera de un módulo (lo correcto para campos de Studio o creados vía API). Este es el método que usan muchas consultoras para despliegues automatizados.


Buenas prácticas


1. Define siempre un valor por defecto

Aunque Odoo devuelva False si no hay default, es mejor declarar explícitamente default=False. Mejora la legibilidad del código y evita ambigüedades en acciones automatizadas o filtros.


2. Nombra los campos como preguntas

Los Booleans funcionan mejor si su nombre se lee como una pregunta de sí/no: is_verified, needs_approval, has_warranty o is_key_account. Evita nombres genéricos como flag o status que no aportan contexto.


3. Usa copy=False para banderas de aprobación o estado

Si el campo representa un estado que no debe copiarse al duplicar registros (por ejemplo “aprobado”), añade copy=False. Así evitas que duplicados hereden estados que deben reevaluarse.


4. Prefiere campos computados para estados derivados

En lugar de escribir acciones que actualicen manualmente un Boolean cuando cambian otros campos, declara un campo computado con @api.depends(). Centraliza la lógica, se ejecuta automáticamente y resulta más fácil de mantener que múltiples escrituras dispersas.


5. Incluye Booleans en la vista de búsqueda si se usan para filtrar

Si los usuarios necesitan filtrar por ese Boolean con frecuencia, añádelo a la vista de búsqueda. En Studio activa la opción de búsqueda; en código, insértalo en la vista <search>. Esto evita obligar a los usuarios a entrar siempre en filtros avanzados.

Errores comunes


Usar Boolean para estados con más de dos opciones

El error más habitual es emplear Booleans cuando un elemento puede tener más de dos estados (p. ej. “pendiente”, “aprobado”, “rechazado”). Entonces se acaban creando múltiples Booleans y la lógica se vuelve inmanejable. Para estados con varias opciones, usa un campo Selection o un workflow adecuado.


Olvidar copy=False en flags de aprobación

Al duplicar registros Odoo copia por defecto todos los valores. Un registro marcado como “aprobado” seguirá marcado en el duplicado a menos que pongas copy=False, lo que puede causar procesos incorrectos si no se revisa.


No añadir el campo a la vista de búsqueda

Si el Boolean sirve para filtrar pero no está en la vista de búsqueda, los usuarios deben recurrir al diálogo de filtros avanzados cada vez, lo que ralentiza tareas repetitivas. Añádelo al search cuando vaya a usarse con frecuencia.


Usar un Boolean en lugar del campo active

Odoo ya incluye el campo active en muchos modelos para controlar la visibilidad. Si lo que buscas es ocultar o archivar registros, utiliza el active nativo y sus acciones de archivar/desarchivar en lugar de crear una solución ad hoc.


Campos Boolean computados sin store=True en filtros

Si un Boolean computado no tiene store=True y lo usas en filtros o agrupaciones, Odoo lanzará errores o ignorará la condición, porque esos valores existen solo en memoria. Si necesitas filtrar o reportar sobre un Boolean calculado, añade store=True.

Conclusión


El Boolean es uno de esos elementos que pasan desapercibidos precisamente porque funcionan bien: desde el active que controla visibilidad, hasta campos como is_published que mueven contenido en la web, y cientos de flags personalizados que las empresas usan cada día.


Comprender su comportamiento en el modelo de datos, configurar correctamente defaults y atributos, y saber cuándo elegirlo frente a Selection u otros tipos, te ayudará a mantener una implementación limpia, predecible y fácil de mantener.

Un Boolean bien diseñado es invisible para el usuario: simplemente cumple su función. Mal usado, genera confusión, estados inconsistentes y soluciones parcheadas. La clave está en conocer las reglas y aplicarlas con disciplina.

En Dasolo acompañamos a empresas en la implantación, personalización y optimización de Odoo en todas las áreas. Ya sea para diseñar un modelo de datos claro, añadir campos a tus procesos o desarrollar un módulo a medida, nuestro equipo puede ayudarte. Contacta con nosotros y hablemos de tu proyecto Odoo.

Campo Boolean en Odoo: Guía Completa y Práctica
Dasolo 6 de marzo de 2026
Compartir esta publicación
Iniciar sesión para dejar un comentario