如何在 Odoo12 中覆盖现有的 res.groups 模型组?
How to override an existing group of res.groups model in Odoo12?
我需要覆盖自定义模块中的现有组,并仅更改另一个自定义模块中的 implied_ids
字段。我试图在我的模块中使用相同的代码,并在 implied_ids
中进行更改,但出现以下错误。然后我尝试使用 inherit_id 字段但再次引发重复 ID 错误。 Bellow 是自定义模块中的原始组:
<record id="group_hms_jr_doctor" model="res.groups">
<field name="name">Jr Doctor</field>
<field name="category_id" ref="module_category_hms"/>
<field name="implied_ids" eval="[(4, ref('acs_hms.group_hms_nurse')),(4, ref('acs_hms.group_hms_receptionist'))]"/>
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
</record>
我只想从中删除 (4, ref('acs_hms.group_hms_receptionist'))
部分。我试过下面的代码,但出现了这个错误。
odoo.tools.convert.ParseError: "duplicate key value violates unique constraint "res_groups_name_uniq"
DETAIL: Key (category_id, name)=(68, Jr Doctor) already exists.
" while parsing /home/ibrahim/workspace/odoo/hms/nl_hms/security/security.xml:5, near
<record id="group_hms_jr_doctor_inherited" model="res.groups">
<field name="name">Jr Doctor</field>
<field name="inherit_id" ref="acs_hms.group_hms_jr_doctor"/>
<field name="category_id" ref="acs_hms.module_category_hms"/>
<field name="implied_ids" eval="[(4, ref('acs_hms.group_hms_nurse'))]"/>
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
</record>
如何覆盖任何现有组并对其进行更改?
您必须将另一个自定义模块设置为自定义模块中的依赖项,然后通过在 record
节点中使用完整的外部 ID,仅 "override" 需要的值。
<record id="acs_hms.group_hms_jr_doctor" model="res.groups">
<field name="implied_ids" eval="[(3, ref('acs_hms.group_hms_nurse'))]"/>
</group>
要更新现有记录,您应该提供该记录的完整 XML-ID(包括应用名称),并使用 3 command
从 many2many 字段中删除项目,这将从 x2many
字段中删除项目但不从数据库中删除它:
<record id="acs_hms.group_hms_jr_doctor" model="res.groups">
<field name="implied_ids" eval="[(3, ref('acs_hms.group_hms_receptionist'))]"/>
</group>
这里会发生的是 Odoo 将在 res.groups
上调用 write
并且 4
命令用于将记录添加到 x2many
字段这不会影响字段都是因为记录都准备好了。
我需要覆盖自定义模块中的现有组,并仅更改另一个自定义模块中的 implied_ids
字段。我试图在我的模块中使用相同的代码,并在 implied_ids
中进行更改,但出现以下错误。然后我尝试使用 inherit_id 字段但再次引发重复 ID 错误。 Bellow 是自定义模块中的原始组:
<record id="group_hms_jr_doctor" model="res.groups">
<field name="name">Jr Doctor</field>
<field name="category_id" ref="module_category_hms"/>
<field name="implied_ids" eval="[(4, ref('acs_hms.group_hms_nurse')),(4, ref('acs_hms.group_hms_receptionist'))]"/>
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
</record>
我只想从中删除 (4, ref('acs_hms.group_hms_receptionist'))
部分。我试过下面的代码,但出现了这个错误。
odoo.tools.convert.ParseError: "duplicate key value violates unique constraint "res_groups_name_uniq"
DETAIL: Key (category_id, name)=(68, Jr Doctor) already exists.
" while parsing /home/ibrahim/workspace/odoo/hms/nl_hms/security/security.xml:5, near
<record id="group_hms_jr_doctor_inherited" model="res.groups">
<field name="name">Jr Doctor</field>
<field name="inherit_id" ref="acs_hms.group_hms_jr_doctor"/>
<field name="category_id" ref="acs_hms.module_category_hms"/>
<field name="implied_ids" eval="[(4, ref('acs_hms.group_hms_nurse'))]"/>
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
</record>
如何覆盖任何现有组并对其进行更改?
您必须将另一个自定义模块设置为自定义模块中的依赖项,然后通过在 record
节点中使用完整的外部 ID,仅 "override" 需要的值。
<record id="acs_hms.group_hms_jr_doctor" model="res.groups">
<field name="implied_ids" eval="[(3, ref('acs_hms.group_hms_nurse'))]"/>
</group>
要更新现有记录,您应该提供该记录的完整 XML-ID(包括应用名称),并使用 3 command
从 many2many 字段中删除项目,这将从 x2many
字段中删除项目但不从数据库中删除它:
<record id="acs_hms.group_hms_jr_doctor" model="res.groups">
<field name="implied_ids" eval="[(3, ref('acs_hms.group_hms_receptionist'))]"/>
</group>
这里会发生的是 Odoo 将在 res.groups
上调用 write
并且 4
命令用于将记录添加到 x2many
字段这不会影响字段都是因为记录都准备好了。