2017-02-13 63 views
0

我有这个XML规范的问题(odoo 9):XML上下文默认One2many在odoo9

the var "groups_ref" is a Many2many relation with res.groups.

<record id="some_id" model="ir.actions.act_window"> 
    .... 
    <field name="context">{'groups_ref': self.env.ref('security.basic_user')}</field> 
    .... 
</record> 

XML Basic User from module security

<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 is not defined

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

+0

有关使用'REF( 'security.base_user')'是什么? – CZoellner

回答

0

,如果你想定义为需要你需要一个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'))]}" /> 

note for default value you need to prefix the name fo the field by < default_ >

0

通用语法传递组方面

<field name="context">{'default_groups_ref': ['module_name.register_group_xml_id_1', 'module_name.register_group_xml_id_2',]}</field> 

尝试用下面的代码:在XML

<record id="some_id" model="ir.actions.act_window"> 
.... 
    <field name="context">{'default_groups_ref': ['security.basic_user']}</field> 
.... 
</record> 
+0

python控制台错误: 'res = self._obj.execute(query,params)' 'DataError:输入的sintax对int类型无效:«security.basic_user»第10行:WHERE“res_groups”.id IN “security.basic_user”)...' –

+0

你可以用* basic_user * xml记录更新你的问题。可能是记录创建的问题。 –

+0

我们可以在现场使用ref吗? Cuz'这个错误是由于字符串'security.basic_user'不是一个整数。查询WHERE“res_groups”.id IN(“security.basic_user”)来运行所需的整数。他不能执行该查询,他需要像WHERE“res_groups”.id IN(1,2)。 – Majikat

相关问题