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

Odoo14 创建发票时如何移除自动name_search并停止外部API数据拉取

Odoo 14 移除发票页客户字段自动name_search及外部API拉取方案

1. 禁用客户字段的自动name_search触发

  • 优先通过视图修改关闭字段自动搜索功能,找到account.move表单视图中客户字段的定义,添加no_search配置即可,无需修改后端代码:
    <field name="partner_id" options="{'no_search': True}" no_open="1" no_create_edit="1"/>
    
  • 如果需要全局控制发票场景的客户字段搜索逻辑,可继承account.move模型给字段添加上下文标识:
    from odoo import models, fields
    
    class AccountMoveInherit(models.Model):
        _inherit = 'account.move'
        
        partner_id = fields.Many2one(
            'res.partner',
            string='客户',
            context={'disable_partner_search': True}
        )
    
  • 重写res.partner的name_search方法,识别发票场景的标识后跳过自定义搜索逻辑:
    from odoo import models, api
    
    class ResPartnerInherit(models.Model):
        _inherit = 'res.partner'
        
        @api.model
        def name_search(self, name='', args=None, operator='ilike', limit=100):
            # 识别发票创建场景的禁用标识
            if self._context.get('disable_partner_search'):
                # 仅保留本地默认搜索逻辑,不执行自定义扩展
                return super(ResPartnerInherit, self).name_search(name, args or [], operator, limit)
            return super().name_search(name, args, operator, limit)
    

2. 停止外部API数据拉取

  • 找到原有逻辑中触发外部API调用的位置,通常是封装在res.partner的name_search方法中,在上述重写的方法内,识别到发票场景标识后直接注释或跳过API调用的代码段即可。
  • 如果是第三方模块实现的API拉取逻辑,继承对应方法后跳过API调用步骤,直接返回本地数据库查询结果即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:36:00