{"id":326,"date":"2025-10-29T10:12:42","date_gmt":"2025-10-29T10:12:42","guid":{"rendered":"https:\/\/sienna-manatee-218967.hostingersite.com\/blogs\/metodo-orm-object-relational-mapping\/"},"modified":"2026-05-01T18:54:26","modified_gmt":"2026-05-01T18:54:26","slug":"metodo-orm-object-relational-mapping","status":"publish","type":"post","link":"https:\/\/exdoo.mx\/blogs\/metodo-orm-object-relational-mapping\/","title":{"rendered":"M\u00e9todo ORM (Object-Relational Mapping)"},"content":{"rendered":"<div style=\"background:linear-gradient(135deg,#0A7099 0%,#0d8db8 100%);color:#fff;padding:28px 26px;border-radius:16px;margin:0 0 28px;box-shadow:0 4px 16px rgba(10,112,153,.2);\">\n<div style=\"display:inline-block;background:rgba(255,255,255,.18);padding:6px 14px;border-radius:20px;font-size:12px;font-weight:700;letter-spacing:.5px;margin-bottom:12px;color:#fff;\">\ud83d\udcd8 ART\u00cdCULO T\u00c9CNICO<\/div>\n<p style=\"font-size:16px;line-height:1.6;margin:0;color:#fff;opacity:.95;\">Los m\u00e9todos ORM facilitan las operaciones b\u00e1sicas de bases de datos como crear, leer, actualizar y eliminar (CRUD), simplificando el desarrollo y permitiendo a los desarrolladores centrarse en la l\u00f3gica de la aplicaci\u00f3n.<\/p>\n<\/div>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/meitodo-orm-_mesa-de-trabajo-1-03-mnl4aPQzGgSNJWBV-1-scaled-1.png\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<div style=\"background:linear-gradient(135deg,#0A7099 0%,#0d8db8 100%);color:#fff;padding:28px 26px;border-radius:16px;margin:0 0 28px;box-shadow:0 4px 16px rgba(10,112,153,.2);\">\n<div style=\"display:inline-block;background:rgba(255,255,255,.18);padding:6px 14px;border-radius:20px;font-size:12px;font-weight:700;letter-spacing:.5px;margin-bottom:12px;color:#fff;\">\ud83d\udcd8 ART\u00cdCULO T\u00c9CNICO<\/div>\n<\/div>\n<p class=\"body\" dir=\"auto\"><span><strong>\u00bfPor qu\u00e9 el ORM es importante en Odoo?<\/strong><\/span><\/p>\n<p class=\"body\" dir=\"auto\"><span><strong>-Abstracci\u00f3n de la BD:&nbsp;<\/strong>No necesitas conocer PostgreSQL o SQL. El ORM maneja todas las diferencias entre motores de bases de datos.<\/span><\/p>\n<p class=\"body\" dir=\"auto\"><span><strong>-Seguridad integrada<\/strong><\/span><\/p>\n<p class=\"body\" dir=\"auto\"><span>El ORM aplica autom\u00e1ticamente las reglas de seguridad de Odoo:<\/span><\/p>\n<div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin:14px 0;\">\n<div style=\"background:#fff;border:2px solid #E5E7EB;padding:10px 14px;border-radius:10px;display:flex;align-items:center;gap:8px;\"><span style=\"font-size:16px;\">\u2713<\/span><span style=\"font-size:13px;color:#374151;font-weight:600;\">Permisos de usuario<\/span><\/div>\n<div style=\"background:#fff;border:2px solid #E5E7EB;padding:10px 14px;border-radius:10px;display:flex;align-items:center;gap:8px;\"><span style=\"font-size:16px;\">\ud83d\udccc<\/span><span style=\"font-size:13px;color:#374151;font-weight:600;\">Reglas de acceso por registro<\/span><\/div>\n<div style=\"background:#fff;border:2px solid #E5E7EB;padding:10px 14px;border-radius:10px;display:flex;align-items:center;gap:8px;\"><span style=\"font-size:16px;\">\ud83d\udca1<\/span><span style=\"font-size:13px;color:#374151;font-weight:600;\">Restricciones de compa\u00f1\u00edas (multi-company)<\/span><\/div>\n<\/div>\n<p class=\"body\" dir=\"auto\"><span><strong>-Consistencia y mantenibilidad:&nbsp;<\/strong>Todos los desarrolladores usan la misma API, haciendo el c\u00f3digo m\u00e1s legible y mantenible.<\/span><\/p>\n<p class=\"body\" dir=\"auto\"><span><strong>&#8211; Funcionalidades avanzadas autom\u00e1ticas<\/strong><\/span><\/p>\n<div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin:14px 0;\">\n<div style=\"background:#fff;border:2px solid #E5E7EB;padding:10px 14px;border-radius:10px;display:flex;align-items:center;gap:8px;\"><span style=\"font-size:16px;\">\u2713<\/span><span style=\"font-size:13px;color:#374151;font-weight:600;\">Campos computados<\/span><\/div>\n<div style=\"background:#fff;border:2px solid #E5E7EB;padding:10px 14px;border-radius:10px;display:flex;align-items:center;gap:8px;\"><span style=\"font-size:16px;\">\ud83d\udccc<\/span><span style=\"font-size:13px;color:#374151;font-weight:600;\">Herencia de modelos<\/span><\/div>\n<div style=\"background:#fff;border:2px solid #E5E7EB;padding:10px 14px;border-radius:10px;display:flex;align-items:center;gap:8px;\"><span style=\"font-size:16px;\">\ud83d\udca1<\/span><span style=\"font-size:13px;color:#374151;font-weight:600;\">Validaci\u00f3n de datos<\/span><\/div>\n<div style=\"background:#fff;border:2px solid #E5E7EB;padding:10px 14px;border-radius:10px;display:flex;align-items:center;gap:8px;\"><span style=\"font-size:16px;\">\u2699\ufe0f<\/span><span style=\"font-size:13px;color:#374151;font-weight:600;\">Cache inteligente<\/span><\/div>\n<\/div>\n<h3 style=\"color:#0A7099;margin-top:24px;\"><span><strong>Los m\u00e9todos ORM b\u00e1sicos que debes conocer<\/strong><\/span><\/h3>\n<p class=\"body\" dir=\"auto\"><span>En Odoo v18, estos son los m\u00e9todos esenciales que forman el coraz\u00f3n del ORM:<\/span><\/p>\n<h3 style=\"color:#0A7099;margin-top:22px;font-size:16px;\">Operaciones CRUD:<\/h3>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li><strong>Crear registros (create): <\/strong>Crea uno o m\u00faltiples registros nuevos en la base de datos.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-10-29-a-la-s-10.27.33a-a.m.-AoP4OVlKlRcX15rd-1.png\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li><strong>Leer registros (read): <\/strong>Obtiene los valores de campos espec\u00edficos de los registros, devolviendo una lista de diccionarios con la informaci\u00f3n solicitada.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-10-29-a-la-s-10.32.44a-a.m.-mP43jKLZq4u30qbz-1.png\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li><span><strong>Actualizar registros (write): <\/strong>Actualiza campos de uno o m\u00faltiples registros.  <\/span><span>   <\/span>    <\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-10-29-a-la-s-10.36.37a-a.m.-Y4LPq0672aI7J0We-1.png\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li><strong>Eliminar registros (unlik): <\/strong>Permite eliminar uno o m\u00faltiples registros. <\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-10-29-a-la-s-10.40.26a-a.m.-m5K8N0PBBZfqQkMJ-1.png\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<h3 style=\"color:#0A7099;margin-top:22px;font-size:16px;\">M\u00e9todos de b\u00fasqueda y consulta<\/h3>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li><strong> Buscar registros (search): <\/strong>Busca registros basados en un dominio de b\u00fasqueda.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-10-29-a-la-s-10.47.02a-a.m.-AGBzZKG5POHK33yO-1.png\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li><span><strong>Contar registros (search_count): <\/strong>Cuenta el n\u00famero de registros que coinciden con el dominio.<\/span><\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-10-29-a-la-s-10.51.45a-a.m.-dJoP1K5k4rC2Dngv-1.png\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li>\n<h3 style=\"color:#0A7099;margin-top:24px;\"><span><strong>Buscar y leer (search_read): <\/strong>Combina b\u00fasqueda y lectura en una sola operaci\u00f3n.<\/span><\/h3>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-10-29-a-la-s-10.54.24a-a.m.-Yg24DVyJvxSveMw5-1.png\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<h3 style=\"color:#0A7099;margin-top:22px;font-size:16px;\">M\u00e9todos de utilidad<\/h3>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li><strong>Obtener registros por IDs (browse): <\/strong>Obtiene registros espec\u00edficos por sus IDs.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-10-29-a-la-s-10.59.23a-a.m.-m5K8N0G2LJHqxVND-1.png\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li><strong>Verificar existencia(exists): <\/strong>Verifica si los registros a\u00fan existen en la base de datos.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-10-29-a-la-s-11.06.04a-a.m.-mjE43Vo1rpfO75jB-1.png\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li><strong>Asegurar un registro (ensure_one): <\/strong>Garantiza que el recordset contiene exactamente un registro.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-10-29-a-la-s-11.11.46a-a.m.-YD0E2KMqPwCnR0jl-1.png\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li><strong>Copiar registros (copy): <\/strong>Crea una copia de los registros.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-10-29-a-la-s-11.16.55a-a.m.-YKb8BKZaK5iQJE44-1.png\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<h3 style=\"color:#0A7099;margin-top:22px;font-size:16px;\">M\u00e9todos avanzados<\/h3>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li><strong>Filtrar registros (filtered): <\/strong>Filtra el recordset basado en una funci\u00f3n.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-10-29-a-la-s-11.21.09a-a.m.-mxB2qVgwyQSaVDgG-1.png\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li><strong>Ordenar registros (sorted): <\/strong>Ordena el recordset.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-10-29-a-la-s-11.25.09a-a.m.-A0xvEpBgGZieoboZ-1.png\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li>\n<h3 style=\"color:#0A7099;margin-top:24px;\"><span><strong>Mapear valores (mapped): <\/strong>Extrae valores de campos o aplica funciones.<\/span><\/h3>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-10-29-a-la-s-11.34.41a-a.m.-dOqZL500POu3J9lw-1.png\" alt=\"\"  style=\"max-width:100%;height:auto;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.12);display:block;margin:14px auto;\" \/><\/p>\n<h3 style=\"color:#0A7099;margin-top:22px;font-size:16px;\">Conclusi\u00f3n<\/h3>\n<p class=\"body\" dir=\"auto\"> El ORM de Odoo v18 no es solo una caracter\u00edstica t\u00e9cnica, es la forma est\u00e1ndar y recomendada de interactuar con datos en Odoo. Te permite enfocarte en la l\u00f3gica de negocio en lugar de las complejidades de la base de datos, haciendo tu desarrollo m\u00e1s r\u00e1pido, seguro y mantenible.<\/p>\n<div style=\"background:linear-gradient(135deg,#0A7099,#0d8db8);color:#fff;padding:26px;border-radius:14px;margin-top:30px;text-align:center;\">\n<h3 style=\"color:#F1B500;margin-top:0;font-size:20px;\">\ud83d\udccc En resumen<\/h3>\n<p style=\"font-size:15px;line-height:1.7;margin:0;color:#fff;opacity:.95;\">En esencia: El ORM es tu mejor aliado para transformar ideas de negocio en c\u00f3digo funcional, sin preocuparte por los detalles t\u00e9cnicos de la base de datos.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udcd8 ART\u00cdCULO T\u00c9CNICO Los m\u00e9todos ORM facilitan las operaciones b\u00e1sicas de bases de datos como crear, leer, actualizar y eliminar (CRUD), simplificando el desarrollo y permitiendo a los\u2026<\/p>\n","protected":false},"author":1,"featured_media":310,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"class_list":["post-326","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/posts\/326","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/comments?post=326"}],"version-history":[{"count":3,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/posts\/326\/revisions"}],"predecessor-version":[{"id":1950,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/posts\/326\/revisions\/1950"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/media\/310"}],"wp:attachment":[{"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/media?parent=326"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/categories?post=326"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/tags?post=326"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}