{"id":144,"date":"2025-12-30T12:58:32","date_gmt":"2025-12-30T12:58:32","guid":{"rendered":"https:\/\/sienna-manatee-218967.hostingersite.com\/blogs\/tipo-de-modelos-en-odoo\/"},"modified":"2026-05-01T18:45:54","modified_gmt":"2026-05-01T18:45:54","slug":"tipo-de-modelos-en-odoo","status":"publish","type":"post","link":"https:\/\/exdoo.mx\/blogs\/tipo-de-modelos-en-odoo\/","title":{"rendered":"Tipo de modelos en Odoo"},"content":{"rendered":"<p class=\"body\" dir=\"auto\"><strong>1. models.Model &#8211; El Modelo Est\u00e1ndar<\/strong><\/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<p style=\"font-size:16px;line-height:1.6;margin:0;color:#fff;opacity:.95;\">El models.Model es el tipo de modelo m\u00e1s com\u00fan y utilizado en Odoo. Representa tablas de base de datos persistentes que almacenan datos de forma permanente.<\/p>\n<\/div>\n<p class=\"body\" dir=\"auto\"> Caracter\u00edsticas principales:<\/p>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li>\n<p class=\"body\" dir=\"auto\"><strong>Persistente<\/strong>: Los datos se almacenan en la base de datos.<\/p>\n<\/li>\n<li>\n<p class=\"body\" dir=\"auto\"><strong>CRUD<\/strong> <strong>completo<\/strong>: Create, Read, Update, Delete<\/p>\n<\/li>\n<li>\n<p class=\"body\" dir=\"auto\"><strong>Herencia<\/strong>: Permite herencia de clases y prototipos.<\/p>\n<\/li>\n<li>\n<p class=\"body\" dir=\"auto\"><strong>Mapeo ORM<\/strong>: Relaci\u00f3n objeto-relacional completa<\/p>\n<p class=\"body\" dir=\"auto\">\n<\/li>\n<\/ul>\n<p class=\"body\" dir=\"auto\"> Dentro de Odoo, este tipo de modelo es usado para los registros de clientes, facturas, inventario, ventas o compras.<\/p>\n<p class=\"body\" dir=\"auto\"><em>&#8211; Ventas<\/em><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-12-29-a-la-s-9.21.56a-a.m.-q2062SnFnh48jahU-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<p class=\"body\" dir=\"auto\"><em>-Compras<\/em><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-12-29-a-la-s-9.26.08a-a.m.-6ZZxxcdxn7Yc6Lzi-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<p class=\"body\" dir=\"auto\"><strong>2. TransientModel &#8211; Modelos Transitorios<\/strong><\/p>\n<p class=\"body\" dir=\"auto\"><strong> <\/strong>El <em>models.TransientModel<\/em> es un modelo especial cuyos registros se eliminan autom\u00e1ticamente despu\u00e9s de un tiempo determinado. Es ideal para operaciones temporales como wizards o procesos batch.<\/p>\n<p class=\"body\" dir=\"auto\"> El uso m\u00e1s recurrente para este tipo de modelos son los asistentes, procesos de importaci\u00f3n o exportaci\u00f3n de datos, configuraciones temporales o informes temporales.<\/p>\n<p dir=\"auto\" class=\"body\"><span><em>&#8211; Asistente para crear facturas de venta<\/em><\/span><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-12-29-a-la-s-9.30.36a-a.m.-KQGRkDmeZSgRIZLr-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<p dir=\"auto\" class=\"body\"><span><em>&#8211; Asistente para pago de facturas<\/em><\/span><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-12-29-a-la-s-9.38.07a-a.m.-muuIhIz1PeSDE5vC-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<p dir=\"auto\" class=\"body\"><strong>3. AbstractModel &#8211; Modelos Abstractos<\/strong><\/p>\n<p dir=\"auto\" class=\"body\"><strong> <\/strong>El <em>models.AbstractModel<\/em> es un modelo base que no crea tablas en la base de datos. Se utiliza para definir comportamientos y campos comunes que ser\u00e1n reutilizados por otros modelos.<\/p>\n<p dir=\"auto\" class=\"body\"> Caracter\u00edsticas principales:<\/p>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li>\n<p dir=\"auto\" class=\"body\">No persistente: No crea tabla en la base de datos.<\/p>\n<\/li>\n<li>\n<p dir=\"auto\" class=\"body\">Reutilizable: Herencia m\u00faltiple sin conflictos<\/p>\n<\/li>\n<li>\n<p dir=\"auto\" class=\"body\">Mixins: Perfecto para crear mixins de funcionalidad.<\/p>\n<\/li>\n<li>\n<p dir=\"auto\" class=\"body\">Sin instancias: No se pueden crear registros directamente.<\/p>\n<p dir=\"auto\" class=\"body\">\n<\/li>\n<\/ul>\n<p dir=\"auto\" class=\"body\"> El mayor uso dado a este tipo de modelo son los reportes, funcionalidades comunes como env\u00edo de correos o logging, campos computados.<\/p>\n<p dir=\"auto\" class=\"body\"><em>&#8211; Env\u00edo de correo de facturas<\/em><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-12-29-a-la-s-9.43.37a-a.m.-rrnm96wYb1DUwtRF-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<p dir=\"auto\" class=\"body\">&#8211;<em> Secuencias de facturas<\/em><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-12-29-a-la-s-9.46.56a-a.m.-PKpIb0xkxcKgJuJT-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<p dir=\"auto\" class=\"body\"><strong>4. models.Base &#8211; La Ra\u00edz de Todo<\/strong><\/p>\n<p dir=\"auto\" class=\"body\"> El <em>models.Base<\/em> es la clase ra\u00edz de la que heredan todos los modelos de Odoo. Rara vez se usa directamente en desarrollo de m\u00f3dulos, pero es importante entender su funcionamiento.<\/p>\n<p dir=\"auto\" class=\"body\"> Caracter\u00edsticas principales:<\/p>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li>\n<p dir=\"auto\" class=\"body\"><strong>Clase base<\/strong>: Todas las clases de modelo heredan de ella.<\/p>\n<\/li>\n<li>\n<p dir=\"auto\" class=\"body\"><strong>Metaclass<\/strong>: Define el comportamiento de creaci\u00f3n de modelos.<\/p>\n<\/li>\n<li>\n<p dir=\"auto\" class=\"body\"><strong>Registro autom\u00e1tico<\/strong>: Registra modelos en el pool.<\/p>\n<\/li>\n<li>\n<p dir=\"auto\" class=\"body\"><strong>Configuraci\u00f3n ORM<\/strong>: Establece la base del mapeo objeto-relacional.<\/p>\n<\/li>\n<\/ul>\n<p dir=\"auto\" class=\"body\"><strong>Conclusi\u00f3n<\/strong><\/p>\n<p dir=\"auto\" class=\"body\"><strong> <\/strong>Comprender los diferentes tipos de modelos en Odoo es fundamental para desarrollar aplicaciones eficientes y mantenibles. Cada tipo tiene su prop\u00f3sito espec\u00edfico:<\/p>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li>\n<p dir=\"auto\" class=\"body\"><strong>Model<\/strong>: Para datos empresariales persistentes<\/p>\n<\/li>\n<li>\n<p dir=\"auto\" class=\"body\"><strong>TransientModel<\/strong>: Para operaciones temporales e interfaces.<\/p>\n<\/li>\n<li>\n<p dir=\"auto\" class=\"body\"><strong>AbstractModel<\/strong>: Para funcionalidad reutilizable y mixins.<\/p>\n<\/li>\n<li>\n<p dir=\"auto\" class=\"body\"><strong>Base<\/strong>: La base del sistema (uso interno).<\/p>\n<p dir=\"auto\" class=\"body\">\n<\/li>\n<\/ul>\n<p dir=\"auto\" class=\"body\">La elecci\u00f3n correcta del tipo de modelo impacta directamente en el rendimiento, mantenibilidad y escalabilidad de tu aplicaci\u00f3n Odoo. Siempre considera si los datos deben persistir, si la funcionalidad es reutilizable o si necesitas una interfaz temporal antes de decidir qu\u00e9 tipo de modelo usar.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. models.Model &#8211; El Modelo Est\u00e1ndar \ud83d\udcd8 ART\u00cdCULO T\u00c9CNICO El models.Model es el tipo de modelo m\u00e1s com\u00fan y utilizado en Odoo. Representa tablas de base de datos\u2026<\/p>\n","protected":false},"author":1,"featured_media":136,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"class_list":["post-144","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\/144","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=144"}],"version-history":[{"count":2,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/posts\/144\/revisions"}],"predecessor-version":[{"id":1803,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/posts\/144\/revisions\/1803"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/media\/136"}],"wp:attachment":[{"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/media?parent=144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/categories?post=144"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/tags?post=144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}