如何使用XML文件将记录添加到Odoo中的Many2many字段?



我正在尝试account.account模型中的 many2many 字段中创建记录。 我在模型中创建了一个account.accountMany2many字段,该字段与mapped.fields模型相关。现在,我需要使用xml数据为 COA 创建记录。 这是我尝试过的。

*。.xml

<record id="coa_field_a_10rf_annual_rev" model="coa.field.mapping">
<field name="name" ref='mof.field_cit_a_10rf_annual_rev'/>
<field name="cit_method">03</field>
</record> <!-- Here a record has been created in the model but not related to its parent field. -->
<record model="account.account" id="l10n_qa.1_bank_template">
<!-- Method1 -->
<field name="existing_coa_fields_ids" eval="[
(6,0,[ref('mof.coa_field_a_10rf_annual_rev')])
]"/>
<!-- Method 2 -->
<field name="existing_coa_fields_ids" eval="[
(0, 0, [ {'name':ref('mof.field_cit_a_10rf_annual_rev'),'cit_method':'01'}] ),
(0, 0, [ {'name':ref('mof.field_cit_c_96sm_net_taxable_inc'),'cit_method':'03'}] ),
]"/>
</record>

我该如何解决这个问题? 注意:由Odoo自己创建的external_idl10n_qa.1_bank_template

l10n_qa.1_bank_template账号标有noupdate,可以在Technical / Sequences & Identifiers / External Identifiers下查看。

你不能用上面的代码更新这样的记录,要设置existing_coa_fields_ids的值,可以使用一个函数

在以下示例中,我们使用记录 ID 通过valuetag 提供的值(作为第二个参数传递)在account.account模型上调用write函数:

<function model="account.account" name="write">
<value model="ir.model.data" eval="obj().env.ref('l10n_qa.1_bank_template').id"/>
<value eval="{'existing_coa_fields_ids': [Command.set([ref('mof.coa_field_a_10rf_annual_rev')])]}"/>
</function>

您还可以将noupdate标志设置为0以更新数据,然后再次将其设置为1

例:

<function model='ir.model.data' name="toggle_noupdate">
<value eval="'account.account'"/>
<value model="ir.model.data" eval="obj().env.ref('l10n_qa.1_bank_template').id"/>
</function>

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

<function model='ir.model.data' name="toggle_noupdate">
<value eval="'account.account'"/>
<value model="ir.model.data" eval="obj().env.ref('l10n_qa.1_bank_template').id"/>
</function>

Odoo鼓励开发人员使用命令来设置x2many字段值

相关内容

  • 没有找到相关文章

最新更新