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

如何通过XML为Odoo中account.account的Many2many字段添加记录?

解决Odoo中Many2many字段关联已有记录失败的问题

问题分析

你尝试通过XML数据为Odoo自带的l10n_qa.1_bank_template记录关联coa.field.mapping记录,但两种方法均未生效,核心原因可能是模块加载顺序错误、Many2many命令使用不当或外部ID引用问题。

解决方案步骤

1. 确保模块加载顺序正确

Odoo中模块按依赖顺序加载,如果你的模块在l10n_qa之前加载,对l10n_qa.1_bank_template的更新会被原模块的数据覆盖。

修改模块的__manifest__.py,将l10n_qa加入依赖列表:

'depends': ['base', 'account', 'l10n_qa'],

2. 使用正确的Many2many更新命令

追加已有记录(推荐)

如果只想给目标记录新增关联、不覆盖原有内容,使用(4, record_id, 0)命令,该命令会将指定ID的记录追加到Many2many字段中:

<record model="account.account" id="l10n_qa.1_bank_template">
    <field name="existing_coa_fields_ids" eval="[(4, ref('mof.coa_field_a_10rf_annual_rev'), 0)]"/>
</record>

替换所有关联记录

如果需要清空原有关联并设置新内容,使用(6, 0, [record_ids])命令,注意此操作会删除该字段原有的所有关联:

<record model="account.account" id="l10n_qa.1_bank_template">
    <field name="existing_coa_fields_ids" eval="[(6, 0, [ref('mof.coa_field_a_10rf_annual_rev')])]"/>
</record>

3. 验证外部ID与字段定义

  • 确认mof.coa_field_a_10rf_annual_rev这个外部ID拼写完全正确,且对应的coa.field.mapping记录已成功创建。
  • 检查account.account模型中existing_coa_fields_ids字段的定义是否正确,示例:
from odoo import models, fields

class AccountAccount(models.Model):
    _inherit = 'account.account'
    
    existing_coa_fields_ids = fields.Many2many(
        'coa.field.mapping',
        string='Existing COA Fields'
        # 如需自定义中间表,可添加relation、column1、column2参数,默认Odoo自动生成
    )

4. 方法2的修正(创建并关联新记录)

如果需要直接创建coa.field.mapping记录并关联,确保字段值格式正确,name若为Many2one字段,需传入对应记录的ID:

<record model="account.account" id="l10n_qa.1_bank_template">
    <field name="existing_coa_fields_ids" eval="[(0, 0, {
        'name': ref('mof.field_cit_a_10rf_annual_rev'),
        'cit_method': '01'
    })]"/>
</record>

生效验证

完成修改后,卸载并重新安装你的模块,或执行命令行更新:

odoo-bin -d your_db_name --update your_module_name

进入Odoo后台查看l10n_qa.1_bank_template记录的existing_coa_fields_ids字段是否已关联目标记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:18:26