OpenERP - 不同视图页面中字段的onchange方法?
Posted
技术标签:
【中文标题】OpenERP - 不同视图页面中字段的onchange方法?【英文标题】:OpenERP - onchange method for fields in different page of view? 【发布时间】:2014-03-06 07:39:52 【问题描述】:似乎 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
?
【问题讨论】:
检查你的 'field3' 和 obj.field3 的字段类型是否相同? 【参考方案1】:不是这样的。它肯定会改变价值。您可能无法在 field3 中获得价值,因为您正在获取的记录将没有 field3 的值。并且您的问题的答案是 IT WORKS。试试这个,
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
希望这会对你有所帮助。
【讨论】:
你是对的。有用。问题出在field3上。创建演示合作伙伴时,该字段上没有域。当我测试它时,那个字段有域,但是那个字段不满足域并且无法选择。但现在它是固定的。谢谢。以上是关于OpenERP - 不同视图页面中字段的onchange方法?的主要内容,如果未能解决你的问题,请参考以下文章