odoo 树形列表明细预览模块

不知道你们是否碰到过这样的问题,在树形列表视图上想要显示x2many字段中某些字段的值。默认情况下,x2many如果显示在列表视图上,会显示为”x条记录”这个鬼样子,没有有效的信息。虽然,我们可以使用many2many_tags部件将其显示出来,但只能显示一个字段。

今天我们带来一个优雅一点的解决方案,list_preview_widget模块。这个模块内置了一个兼容char字段的小部件list_preview,我们只需要将要预览的部件使用这个小部件就可以预览明细里的字段了。

首先,我们安装好这个模块,然后在要添加预览的对象中新增一个文本字段,这里我们以stock.picking模块为例:

1
2
3
4
5
6
def _get_dispay_text(self):
for picking in self:
picking.display_text = ";".join(
f"型号:{line.product_variant or '无'},数量:{line.product_uom_qty},备注:{line.sale_note or''}" for line in picking.move_ids_without_package)

display_text = fields.Char("明细预览", compute="_get_dispay_text")

我们新增加了一个文本字段display_text,这个字段的值是计算方式获取的,以方便我们灵活定制要显示的内容。

然后,我们在视图中新增这个字段,并标记为list_preview部件:

1
2
3
4
5
6
7
8
9
10
<record id="view_picking_list" model="ir.ui.view">
<field name="name">view picking list</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.vpicktree"/>
<field name="arch" type="xml">
<field name="partner_id" position="after">
<field name="display_text" widget="list_preview"/>
</field>
</field>
</record>

然后我们更新我们的自定义模块,可以看到分拣列表中已经有一个小图标,点击可以看到预览的内容:

有需要的同学欢迎到我的淘宝选购

你的支持我的动力