You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo开发需求:选择Evaluation Template后展示关联行名称

解决方案:选择供应商评估模板后展示关联明细

方法一:用计算字段聚合显示明细名称

在VendorEvaluation模型中添加计算字段,将选中模板的所有明细名称以逗号分隔的形式展示:

class VendorEvaluation(models.Model):
    _inherit = 'vendor.evaluation'

    evaluation_template = fields.Many2one('vendor.evaluation.template', string='Evaluation Template')
    evaluation_line_names = fields.Char(string='评估项', compute='_compute_evaluation_line_names')

    def _compute_evaluation_line_names(self):
        for rec in self:
            if rec.evaluation_template:
                # 聚合所有明细的name字段,用逗号分隔
                rec.evaluation_line_names = ', '.join(rec.evaluation_template.evaluation_lines.mapped('name'))
            else:
                rec.evaluation_line_names = ''

然后在表单视图中,在evaluation_template字段下方添加这个计算字段:

<field name="evaluation_template"/>
<field name="evaluation_line_names" readonly="1"/>

方法二:用关联字段以表格形式展示明细

如果需要更清晰的列表展示,可以添加一个关联的One2many字段,直接复用模板的明细记录:

class VendorEvaluation(models.Model):
    _inherit = 'vendor.evaluation'

    evaluation_template = fields.Many2one('vendor.evaluation.template', string='Evaluation Template')
    evaluation_lines = fields.One2many(related='evaluation_template.evaluation_lines', string='评估明细', readonly=True)

在表单视图中添加带tree子视图的字段:

<field name="evaluation_template"/>
<field name="evaluation_lines" readonly="1">
    <tree editable="false">
        <field name="name"/>
    </tree>
</field>

两种方式的区别:

  • 方法一适合简洁展示所有评估项名称,适合空间有限的场景
  • 方法二适合需要清晰查看每条明细的场景,保留了表格的展示形式

内容的提问来源于stack exchange,提问作者Muhammad Saleem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 09:15:32