Mejorando las búsquedas en los campos many2one

13 de junio de 2023 por
Gustavo Orrillo
| Sin comentarios aún
 

En las vistas formulario de Odoo, los campos many2one utilizan un widget que es muy util. Este widget permite hacer el autocompletado de los datos y la búsqueda del registro relacionado en base al nombre. No solo eso, presenta además una opción de "Buscar más..." la cual es muy util.

Para la opción "Buscar más..." Odoo muestra un pop-up que permite seleccionar el registro relacionado. Las columnas de dicho pop-up son definidas en la primer vista del tipo tree del objeto relacionado (es algo que Odoo hace por default).


Como podemos cambiar los contenidos de este pop-up? Definiendo una nueva vista tree y agregando dicha vista al contexto del campo many2one. Por ejemplo, tenemos un campo llamado quant_id que hace referencia al modelo stock.quant. Solo queremos mostrar las columnas de cantidad, nro de serie, producto y ubicación en el campo quant_id. No queremos mostrar los botones para actualizar inventario. Para ello definimos una vista del tipo tree.

	<record id="inherit_view_stock_quant_tree" model="ir.ui.view">
​​<field name="name">stock.quant.inherit.tree</field>
​<field name="model">stock.quant</field>
​<field eval="8" name="priority"/>
​<field name="arch" type="xml">
​<tree string="Quants">
​<field name="product_id"/>
​<field name="lot_id"/>
​<field name="location_id"/>
​<field name="quantity"/>
​ ​ ​</tree>
​</field>
</record>

Luego solo necesitamos modificar el contexto del campo quant_id para invocar dicha vista

<field name="quant_id" 
context="{
​'tree_view_ref': 'inherit_view_stock_quant_tree',
​'search_view_ref': 'inherit_view_stock_quant_filter',
​​}"
​domain="source_quant_domain" />

En donde por contexto le indicamos mediante la clave "tree_view_ref" cual es la vista tipo tree que queremos utilizar. De la misma manera con la clave search_view_ref podemos indicarle al sistema cual es la vista tipo búsqueda que vamos a utilizar. También podemos especificar en forma dinámica cual es el dominio del campo (no tenerlo hardcodeado en la vista), pero ello lo vamos a cubrir en otro post.

Ya con estos cambios podemos mejorar la usabilidad de los campos many2one en los formularios.

Gustavo Orrillo 13 de junio de 2023
Compartir
Categorías
Archivar
Identificarse dejar un comentario