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
相关产品推荐
相关产品推荐

