如何在Odoo的one2many字段中实现两个字段的拼接展示?
实现方案
该需求完全可以实现,根据你的使用场景可选以下两种主流方案:
方案1:后端新增计算字段(推荐)
适用于需要将拼接字段用于过滤、导出、后续业务逻辑计算的场景,在one2many关联的子表模型中新增计算字段即可,以Odoo框架为例代码如下:
from odoo import models, fields class YourSubModel(models.Model): _name = 'your.sub.model' # 原有两个待拼接字段 field_a = fields.Char(string='字段A') field_b = fields.Char(string='字段B') # 新增拼接计算字段 merged_field = fields.Char(string='合并展示字段', compute='_compute_merged_field') def _compute_merged_field(self): for item in self: item.merged_field = f"{item.field_a or ''} {item.field_b or ''}"
配置完成后在父模型的one2many列表视图中直接引用merged_field字段展示即可。
方案2:前端视图直接拼接
如果仅需要在页面展示拼接效果,不需要用到该字段做业务处理,可以直接修改视图XML代码实现,无需修改模型层:
<field name="your_one2many_field_id"> <tree string="子表列表"> <field name="field_a" invisible="1"/> <field name="field_b" invisible="1"/> <column name="merged_show" string="合并展示字段"> <t t-esc="record.field_a.value"/> <t t-esc="record.field_b.value"/> </column> </tree> </field>
如果你使用的是其他包含one2many字段类型的框架,核心逻辑一致:要么在子模型层新增计算字段合并两个目标字段,要么在视图渲染层对两个字段的值做拼接输出即可。
内容的提问来源于stack exchange,提问作者Oscar Vardela
相关产品推荐
相关产品推荐

