【问题标题】:OpenERP - onchange method for fields in different page of view?OpenERP - 不同视图页面中字段的onchange方法?
【发布时间】: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>
...

field1field2 将被填充。但是如何填写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 的字段类型是否相同?

标签: python xml view openerp onchange


【解决方案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上。创建演示合作伙伴时,该字段上没有域。当我测试它时,那个字段有域,但是那个字段不满足域并且无法选择。但现在它是固定的。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多