XML 上下文默认 One2many in odoo9.



我对这个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>

最新更新