我正在尝试account.account
模型中的 many2many 字段中创建记录。 我在模型中创建了一个account.account
Many2many
字段,该字段与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 通过value
tag 提供的值(作为第二个参数传递)在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字段值