{"id":179,"date":"2025-12-18T16:42:13","date_gmt":"2025-12-18T16:42:13","guid":{"rendered":"https:\/\/sienna-manatee-218967.hostingersite.com\/blogs\/herencia-primaria-de-vistas-2\/"},"modified":"2026-05-01T18:45:55","modified_gmt":"2026-05-01T18:45:55","slug":"herencia-primaria-de-vistas","status":"publish","type":"post","link":"https:\/\/exdoo.mx\/blogs\/herencia-primaria-de-vistas\/","title":{"rendered":"Herencia primaria de vistas"},"content":{"rendered":"<p class=\"body\" dir=\"auto\"><em>\u00bfQu\u00e9 es la herencia primaria de vistas en Odoo?<\/em><\/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;\">En Odoo, la herencia primaria de vistas (primary view inheritance) es el mecanismo mediante el cual una vista base es extendida o modificada por otras vistas, sin reemplazarla completamente. Es fundamental para la modularidad de Odoo, ya que permite que distintos m\u00f3dulos alteren la interfaz sin entrar en conflicto entre s\u00ed.<\/p>\n<\/div>\n<p class=\"body\" dir=\"auto\"><span><em>\u00bfC\u00f3mo se define una herencia primaria?<\/em><\/span><\/p>\n<p class=\"body\" dir=\"auto\"><span>Una vista primaria es la vista original definida para un modelo y un tipo de vista espec\u00edfico:<\/span><\/p>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li>\n<p class=\"body\" dir=\"auto\"><span>form<\/span><\/p>\n<\/li>\n<li>\n<p class=\"body\" dir=\"auto\"><span>tree \/ list<\/span><\/p>\n<\/li>\n<li>\n<p class=\"body\" dir=\"auto\"><span>Kanban<\/span><\/p>\n<\/li>\n<li>\n<p class=\"body\" dir=\"auto\"><span>search<\/span><\/p>\n<\/li>\n<li>\n<p class=\"body\" dir=\"auto\"><span>etc.<\/span><\/p>\n<p class=\"body\" dir=\"auto\">\n<\/li>\n<\/ul>\n<p class=\"body\" dir=\"auto\"><span>Y una herencia primaria es una vista que hereda a alguna de las vistas originales definidas para un modelo (como las mencionadas anteriormente) utilizando el valor <strong><em>primary<\/em><\/strong> dentro del campo <strong><em>mode<\/em><\/strong><\/span>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-12-18-a-la-s-4.49.53a-p.m.-cZQyIi0qoFMlbx2o-2.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\">Al establecer el valor <strong><em>primary<\/em><\/strong> durante la herencia, no se realizar\u00e1n cambios en la vista existente, sino que se crear\u00e1 una vista independiente que heredar\u00e1 la vista original y los cambios de la vista actual.<\/p>\n<p dir=\"auto\" class=\"body\">La herencia normal realizar\u00e1 cambios en la vista original; el modo principal actuar\u00e1 como una nueva vista con cambios.<\/p>\n<p dir=\"auto\" class=\"body\"><strong>Ejemplo de herencia primaria<\/strong><\/p>\n<p dir=\"auto\" class=\"body\">Tenemos la vista lista de las compras (modelo purchase.order), cuyo nombre t\u00e9cnico es <strong><em>purchase.purchase_order_kpis_tree<\/em><\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-12-18-a-la-s-4.56.48a-p.m.-Ba1OZ8pwZcsb7wIV-2.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\">A partir de la vista anterior, creamos una nueva vista con herencia primaria dentro de un m\u00f3dulo personalizado. En esta nueva vista agregaremos la columna <strong><em>Moneda<\/em><\/strong> despu\u00e9s de la columna de <strong><em>Estado<\/em><\/strong>. El c\u00f3digo de la nueva vista es el siguiente:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-12-18-a-la-s-5.00.31a-p.m.-LbPBMv6Ap0FDYYN1-2.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\">Donde:<\/p>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li>\n<p class=\"body\" dir=\"auto\">mode: Es el campo que define la herencia primaria. Sus posibles valores son <strong><em>primary<\/em><\/strong> y <strong><em>extension<\/em><\/strong>, este \u00faltimo siendo el valor que toma por defecto. Solo aplica si se est\u00e1 heredando a otra vista (campo inherit_id).<\/p>\n<\/li>\n<\/ul>\n<p class=\"body\" dir=\"auto\">Tambi\u00e9n agregamos una acci\u00f3n y un elemento de men\u00fa para mostrar la nueva vista con herencia primaria creada. El men\u00fa se llama <strong><em>Nueva vista Solicitudes de cotizaci\u00f3n<\/em><\/strong> y se agrega despu\u00e9s del men\u00fa <strong><em>Solicitudes de cotizaci\u00f3n<\/em><\/strong> original. El c\u00f3digo para este men\u00fa es el siguiente:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-12-18-a-la-s-5.07.20a-p.m.-Kf9N6JJcMhZqcnMr-2.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\">Por lo que al actualizar nuestro m\u00f3dulo personalizado visualizamos el nuevo elemento de men\u00fa. Al seleccionarlo, vemos nuestra nueva columna <strong><em>Moneda<\/em><\/strong> despu\u00e9s de la columna <strong><em>Estado<\/em><\/strong>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-12-18-a-la-s-5.13.11a-p.m.-Mk3SjhiiznUJ4DC5-2.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;\" \/><br \/>\n<img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-12-18-a-la-s-5.14.44a-p.m.-uExpnCpxguhSZUmL-2.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\">Sin embargo, al regresar a la vista original de <strong><em>Solicitudes de cotizaci\u00f3n<\/em><\/strong> (cuyo nombre t\u00e9cnico es <strong><em>purchase.purchase_order_kpis_tree<\/em><\/strong>), notamos que esta nueva columna no est\u00e1:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-12-18-a-la-s-6.05.39a-p.m.-29c6kc3YseJpCesi-2.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\">\u00bfA qu\u00e9 se debe esto? A que la vista creada con herencia primaria toma los campos y cambios de la vista a la que hereda, pero los cambios que se agreguen en esta nueva vista no se ver\u00e1n reflejados en la vista a la que hereda.<\/p>\n<p dir=\"auto\" class=\"body\">Ahora, si creamos una vista que herede a la vista de <strong><em>Solicitudes de cotizaci\u00f3n<\/em><\/strong> normal sin utilizar herencia primaria, la columna nueva se ver\u00e1 en la vista original, como funciona normalmente. La columna que agregamos es <strong><em>Fecha de confirmaci\u00f3n<\/em><\/strong> y la agregamos despu\u00e9s de la columna <strong><em>Fecha l\u00edmite de la orden<\/em><\/strong>. El c\u00f3digo de la vista se ve de la siguiente forma:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-12-18-a-la-s-6.12.25a-p.m.-Inya1aKo5VGQfrA2-2.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\">Pero esta columna tambi\u00e9n se visualiza en la vista creada con herencia primaria (<strong><em>Nueva vista Solicitudes de cotizaci\u00f3n<\/em><\/strong>), junto con la columna <strong><em>Moneda<\/em><\/strong> que se agreg\u00f3 en la definici\u00f3n de esta nueva vista.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-12-18-a-la-s-6.15.57a-p.m.-GnFt49kRC388lylR-2.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\"> Esto debido a que la nueva vista con herencia primaria tambi\u00e9n obtiene los cambios y modificaciones que se hagan sobre la vista original, es decir, a la que le hace herencia primaria.<\/p>\n<p class=\"body\" dir=\"auto\">\n<p class=\"body\" dir=\"auto\">Por \u00faltimo, creamos una vista que herede a la vista creada con herencia primaria, es decir, la vista <strong><em>Nueva vista Solicitudes de cotizaci\u00f3n<\/em><\/strong>. Agregamos la columna <strong><em>Entrega esperada<\/em><\/strong> despu\u00e9s de la columna <strong><em>Fecha de confirmaci\u00f3n<\/em><\/strong>. El c\u00f3digo se ve de la siguiente manera:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-12-18-a-la-s-6.22.11a-p.m.-vClcUFFxLLbW9CvR-2.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\">Al actualizar el m\u00f3dulo y ver nuestra vista creada con herencia primaria vemos que se agreg\u00f3 nuestra nueva columna.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-12-22-a-la-s-8.57.22a-a.m.-FGy6yelQDcYd8q0t-2.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\">Pero regresando a nuestra vista original, <strong><em>Solicitudes de cotizaci\u00f3n<\/em><\/strong>, notamos que esta nueva columna no est\u00e1.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/exdoo.mx\/blogs\/wp-content\/uploads\/2026\/05\/captura-de-pantalla-2025-12-22-a-la-s-9.00.41a-a.m.-p702QrZ8Bm0QsdpR-2.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>Consejos r\u00e1pidos:<\/strong><\/p>\n<ul style=\"padding-left:22px;line-height:1.9;\">\n<li>\n<p dir=\"auto\" class=\"body\">Utiliza herencia primaria solo en casos espec\u00edficos. Una vista creada a partir de una herencia primaria puede tener campos que no estaban pensados para esa vista.<\/p>\n<p dir=\"auto\" class=\"body\">\n<\/li>\n<li>\n<p dir=\"auto\" class=\"body\">Las vistas creadas a partir de una herencia primaria son dependientes de una acci\u00f3n que las muestre; si no se define esta acci\u00f3n correctamente, no se podr\u00e1 visualizar la nueva vista con herencia primaria junto con los cambios que se agregaron en su definici\u00f3n.<\/p>\n<p dir=\"auto\" class=\"body\">\n<\/li>\n<li>\n<p dir=\"auto\" class=\"body\">Toma en cuenta los cambios que hagas sobre la vista original y la vista con herencia primaria, podr\u00edan, o no, verse reflejados entre una u otra vista.<\/p>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfQu\u00e9 es la herencia primaria de vistas en Odoo? \ud83d\udcd8 ART\u00cdCULO T\u00c9CNICO En Odoo, la herencia primaria de vistas (primary view inheritance) es el mecanismo mediante el cual\u2026<\/p>\n","protected":false},"author":1,"featured_media":165,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"class_list":["post-179","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\/179","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=179"}],"version-history":[{"count":2,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/posts\/179\/revisions"}],"predecessor-version":[{"id":1805,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/posts\/179\/revisions\/1805"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/media\/165"}],"wp:attachment":[{"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/media?parent=179"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/categories?post=179"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/exdoo.mx\/blogs\/wp-json\/wp\/v2\/tags?post=179"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}