Odoo 10 视图扩展咨询:添加关联模型product_id字段
在Odoo 10中扩展包裹视图显示关联产品字段的实现方案
好的,要在Odoo 10的包裹操作视图中展示来自pack_operation_product_id关联的product_id字段,最稳妥的方式是通过自定义模块继承并扩展原有视图(避免修改核心模块代码),具体实现步骤如下:
1. 创建自定义模块
首先你需要一个基础的自定义模块,比如命名为stock_pack_product_ext,模块结构如下:
stock_pack_product_ext/ ├── __init__.py ├── __manifest__.py └── views/ └── pack_operation_views.xml
模块配置文件(manifest.py)
这个文件用来声明模块的基本信息和依赖:
{ 'name': 'Stock Pack Operation Product Display', 'version': '1.0', 'author': 'Your Name', 'depends': ['stock'], # 依赖stock模块,确保能继承其视图 'data': [ 'views/pack_operation_views.xml', ], 'installable': True, 'auto_install': False, }
__init__.py保持空文件即可。
2. 编写视图扩展XML
在views/pack_operation_views.xml中,我们继承Odoo stock模块的默认包裹操作视图,并插入关联的产品字段:
扩展树视图(列表视图)
如果要在包裹操作的列表中显示产品字段:
<odoo> <!-- 继承默认树视图 --> <record id="stock_pack_operation_tree_extended" model="ir.ui.view"> <field name="name">stock.pack.operation.tree.extended</field> <field name="model">stock.pack.operation</field> <field name="inherit_id" ref="stock.view_pack_operation_tree"/> <field name="arch" type="xml"> <!-- 在产品数量字段后插入关联产品字段 --> <xpath expr="//field[@name='product_qty']" position="after"> <field name="pack_operation_product_id.product_id" string="Product"/> </xpath> </field> </record> <!-- 扩展表单视图(可选) --> <record id="stock_pack_operation_form_extended" model="ir.ui.view"> <field name="name">stock.pack.operation.form.extended</field> <field name="model">stock.pack.operation</field> <field name="inherit_id" ref="stock.view_pack_operation_form"/> <field name="arch" type="xml"> <!-- 在产品数量所在的分组内添加产品字段 --> <xpath expr="//field[@name='product_qty']/.." position="inside"> <field name="pack_operation_product_id.product_id" string="Product" class="oe_inline"/> </xpath> </field> </record> </odoo>
3. 安装并测试模块
- 将模块放到Odoo的addons目录下
- 在Odoo后台启用开发者模式,找到该模块并安装
- 打开「仓库」→「操作」→「包裹操作」视图,就能看到新增的「Product」字段了
关键说明和注意事项
- 关联字段引用:直接使用
pack_operation_product_id.product_id即可跨关联字段显示产品,Odoo会自动处理关联数据的加载 - 视图定位:
xpath的expr用来定位要插入字段的位置,你可以根据实际需求调整(比如在其他字段前后插入) - 空值处理:如果
pack_operation_product_id为空,该字段会显示空值,这是正常的业务逻辑 - 视图ID确认:如果你要扩展的不是stock模块的默认视图,需要修改
inherit_id的ref值为目标视图的XML ID
内容的提问来源于stack exchange,提问作者M.E.
相关产品推荐
相关产品推荐

