2017-02-13 44 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