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

Odoo中如何提取展示many2one字段值中'-'字符后的文本?

该需求完全可实现,以下是三种不同适用场景的实现方案:

方案1:全局生效(所有引用res.partner的关联字段都按该规则展示)

重写res.partner模型的name_get方法,适合需要全系统所有关联res.partner的下拉、展示字段都统一显示'-'后内容的场景:

from odoo import models, api

class ResPartner(models.Model):
    _inherit = 'res.partner'

    def name_get(self):
        result = []
        for partner in self:
            if '-' in partner.name:
                display_name = partner.name.split('-')[-1].strip()
            else:
                display_name = partner.name
            result.append((partner.id, display_name))
        return result

方案2:仅针对当前自定义模块的partner_shipping_ids字段生效

不会影响其他模块的res.partner关联字段展示,适合仅当前模块需要该展示规则的场景。

注意:你提到的字段名partner_shipping_ids带复数后缀_ids,通常是One2many/Many2many字段的命名规则,如果你实际是Many2one字段建议调整为单数命名避免混淆。
首先在你的自定义模型中新增计算字段:

from odoo import models, fields, api

class YourCustomModel(models.Model):
    # 替换为你实际的自定义模型名称
    _name = 'your.custom.model'

    # 你的原关联字段,根据实际字段类型调整
    partner_shipping_ids = fields.Many2one('res.partner', string='配送合作伙伴')
    # 新增专用展示字段
    shipping_partner_display = fields.Char(compute='_compute_shipping_name')

    @api.depends('partner_shipping_ids.name')
    def _compute_shipping_name(self):
        for record in self:
            if not record.partner_shipping_ids:
                record.shipping_partner_display = ''
                continue
            name = record.partner_shipping_ids.name
            record.shipping_partner_display = name.split('-')[-1].strip() if '-' in name else name

之后在模块的视图XML中,把原来展示partner_shipping_ids的位置替换为shipping_partner_display字段即可。

方案3:仅单视图临时生效(无需修改后端代码)

如果只需要在某一个列表/表单视图中临时修改展示规则,可以直接在XML视图中用Qweb语法处理:

<!-- 列表视图示例 -->
<field name="partner_shipping_ids">
    <tree>
        <field name="name" t-esc="record.name.split('-')[-1].strip() if '-' in record.name else record.name"/>
    </tree>
</field>

内容的提问来源于stack exchange,提问作者Oscar Vardela

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:36:02