我对这个xml规范有问题(odoo 9(:
var "groups_ref" 是与 res.groups 的 Many2many 关系。
<record id="some_id" model="ir.actions.act_window">
....
<field name="context">{'groups_ref': self.env.ref('security.basic_user')}</field>
....
</record>
来自模块安全性的 XML 基本用户
<record id="basic_user" model="res.groups">
<field name="name">Base User</field>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
</record>
给我一个错误:
名称错误:未定义 self
我的问题是如何使用此 xml 定义将默认值传递给 One2many 关系,我不想通过 py 中的字段声明传递它。谢谢。
在 xml 中,如果要为需要 python 表达式的字段定义值,则需要使用 eval
:
假设您的数据库中有一条 xmlid = "record_id" 的记录,因此在 XML 文件中为该记录定义一个 many2one 字段的值:
<field name="m2o_field_name" ref="record_id"/>
or
<field name="m2o_field_name" eval="ref('record_id')"/>
所以在你的情况下试试这个,因为我以前从未尝试过:
<field name="context" eval="{'default_groups_ref':[(4,ref('security.basic_user'))]}" />
注意 对于默认值,您需要在字段的名称前面加上前缀
在上下文中传递组的通用语法
<field name="context">{'default_groups_ref': ['module_name.register_group_xml_id_1', 'module_name.register_group_xml_id_2',]}</field>
尝试使用以下代码:
<record id="some_id" model="ir.actions.act_window">
....
<field name="context">{'default_groups_ref': ['security.basic_user']}</field>
....
</record>