在openerp中没有xml可能的改变方法

时间:2015-06-11 06:14:24

标签: odoo

.subnav__hover
def onchange_partner(self, cr, uid, ids, partner_id, context=None):
    res = {}
    if partner_id:
        obj = self.pool.get('res.partner').browse(cr, uid, partner_id)
        res['field1'] = obj.field1
        res['field2'] = obj.field2
        res['field3'] = 'Hello' # this field type must be char or if not then give 
        #value accordingly, its just to prove you that values are filled on onchange.
    return {'value': res}

但我不写#34; onchange_partner"因为它不使用xml如何使用

1 个答案:

答案 0 :(得分:0)

写onchange方法有两种方法。

Old Api:

model.py

中的

def myonchange(self,cr,uid,ids,field_name,context=None):
    ...
    ...
    ... 
    return {'value':{'field': 'value'}}

in model_view.xml

<field name="field_name" on_change="myonchange(field_name)"/>

如果您使用旧的api,则需要在xml视图中的字段上添加onchange属性。

新Api:

@api.onchange('field_name')
def my_onchange(self):
      self.field_name = 'Value'  # to set filed value

在新的API中,您需要添加装饰器,如果在窗体中更改了装饰器中指定的任何字段,则会触发对装饰函数的调用。