Métodos ORM en Odoo
El ORM (Object-Relational Mapping) es la capa que abstrae PostgreSQL en Odoo. Te permite crear, leer, actualizar, buscar, filtrar y mapear registros sin escribir SQL — y aplica seguridad, multi-compañía, herencia y caché de forma automática. Esta guía recorre los métodos esenciales que todo developer Odoo debe dominar.
Los métodos ORM facilitan las operaciones básicas (CRUD), simplifican el desarrollo y permiten al developer concentrarse en la lógica de negocio en lugar de los detalles de PostgreSQL. Ningún módulo Odoo se escribe sin tocarlos a diario.
1
¿Por qué el ORM es importante en Odoo?
2
Operaciones CRUD
Las cuatro operaciones fundamentales con cualquier modelo Odoo:
2.1 — Crear registros
create()self.env[‘model’].create({…})

2.2 — Leer registros
read()records.read([‘campo1’, ‘campo2’])

2.3 — Actualizar registros
write()records.write({‘campo’: nuevo_valor})

2.4 — Eliminar registros
unlink()records.unlink()

unlink() elimina de verdad los registros (no es un borrado lógico). Si necesitas auditoría o “papelera de reciclaje”, implementa un campo active y usa el patrón de archivado de Odoo.
3
Métodos de búsqueda y consulta
Cuando ya tienes datos en la BD y necesitas localizarlos, estos son tus aliados. Todos aceptan un dominio (lista de tuplas) como filtro:
3.1 — Buscar registros
search()self.env[‘model’].search([(‘campo’, ‘=’, valor)])

3.2 — Contar registros
search_count()self.env[‘model’].search_count([…])

3.3 — Buscar y leer en una sola operación
search_read()self.env[‘model’].search_read(domain, fields)

search_read() sobre search() seguido de iterar el recordset — evita cargar campos innecesarios y reduce el roundtrip a la BD.
4
Métodos de utilidad
Operaciones comunes sobre recordsets que ya conoces o sobre los que tienes una referencia directa:
4.1 — Obtener registros por ID
browse()self.env[‘model’].browse([1, 2, 3])

4.2 — Verificar existencia
exists()records.exists()

4.3 — Asegurar un solo registro
ensure_one()record.ensure_one()

4.4 — Copiar registros
copy()record.copy({‘name’: ‘Nueva copia’})

5
Métodos avanzados sobre recordsets
Estos métodos operan en memoria sobre un recordset ya cargado — no hacen consultas adicionales a la BD. Son la herramienta idiomática para transformar datos en Python:
5.1 — Filtrar registros
filtered()records.filtered(lambda r: r.estado == ‘done’)

5.2 — Ordenar registros
sorted()records.sorted(key=’date’, reverse=True)

5.3 — Mapear valores
mapped()records.mapped(‘partner_id.name’)

orders.filtered('confirmed').sorted('date').mapped('total') es código completamente legible y muy difícil de hacer mal. Es uno de los lugares donde Odoo realmente brilla.📋 Tabla resumen
📌 En resumen
El ORM de Odoo no es solo una característica técnica — es la forma estándar y recomendada de interactuar con datos. Te permite enfocarte en la lógica de negocio en lugar de las complejidades de PostgreSQL, haciendo tu desarrollo más rápido, seguro y mantenible.
En esencia: el ORM es tu mejor aliado para transformar ideas de negocio en código funcional. Las cuatro categorías cubren el 95% de las necesidades reales — domina estas trece llamadas y serás autosuficiente para cualquier módulo Odoo. En Exdoo compartimos contenido técnico para developers Odoo y desarrollamos módulos a medida con buenas prácticas de ORM desde el primer commit.
Deja un comentario