odoo9中的XML上下文默认为One2many

时间:2017-02-13 14:34:03

标签: openerp odoo-9

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

给我一​​个错误:

  

NameError:未定义self

我的问题是如何使用这个xml定义将默认值传递给One2many关系,我不想在py中传递它通过字段声明。感谢。

2 个答案:

答案 0 :(得分:0)

在上下文中传递组的通用语法

<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>

答案 1 :(得分:0)

在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'))]}" />
  

请注意,对于默认值,您需要在字段名称前加上前缀   &LT; default_&gt;