Events
On Change
当一个字段的内容发生改变时,on_change属性定义个方法就会被调用。
这个方法至少有几个参数:cr,uid,ids,这是三个传统的参数并且也在上下文字典中。你需要给方法添加参数。他们必须符合在视图中定义的其他字段,并且必须在XML中以以下的方式定义::
<field name="name_of_field" on_change="name_of_method(other_field'_1_', ..., other_field'_n_')"/>
下面的是来自销售订单视图中的例子。
你可以使用‘context’关键字来访问上下文中的数据,这个上下文可以被用作函数中的参数::
<field name="shop_id" on_change="onchange_shop_id(shop_id)"/>
def onchange_shop_id(self, cr, uid, ids, shop_id):
v={}
if shop_id:
shop=self.pool.get('sale.shop').browse(cr,uid,shop_id)
v['project_id']=shop.project_id.id
if shop.pricelist_id.id:
v['pricelist_id']=shop.pricelist_id.id
v['payment_default_id']=shop.payment_default_id.id
return {'value':v}
当编辑shop_id表单字段时,sale_order对象的onchange_shop_id方法会被调用,并且返回一个字典,其中‘value’关键字包含在’project_id’, ‘pricelist_id’, ‘payment_default_id’字段中新值来使用的字典。
我们注意到除了字段值,更改更多的东西是可能的。例如,可以更改字段值和其他字段的domain,这个更改通过表单的返回值:return {‘domain’: d, ‘value’: value}
returns: | 一个字典有以下关键字任意的混合:
|
---|