OpenERP - 不同视图页面字段的onchange方法?
看起来,onchange方法只在当前可见的字段上有效。如果我用它来填充其他页面上的字段,它就没反应。举个例子,我有一个包含多个页面的视图。大部分信息需要在第一页填写,所以第一页的字段大部分都填好了。但是有一个字段需要在其他页面填写,当我在另一个页面选择partner_id
时。比如说,视图是这样的:
...
<page string="page1">
<field name=partner_id on_change="onchange_partner(partner_id)"
<field name="field1"/>
<field name="field2"/>
</page>
<page string="page2">
<field name="field3"/>
</page>
...
field1
和field2
会被填充。但是我该如何填充field3
呢?或者说这根本不可能,因为系统在使用onchange方法时并没有把它保存到数据库里?
我的onchange方法大概是这样的:
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'] = obj.field3 # this value isn't being filled
return {'value': res}
那么,我该如何填充field3
呢?
1 个回答
2
不是这样的。这个值肯定会改变。你可能在field3里没有得到值,是因为你获取的记录里没有field3的值。至于你的问题,答案是它是有效的。试试这个,
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}
希望这能帮到你。