我可以在onChange事件中填充字段吗?

时间:2013-07-10 18:58:25

标签: python xml onchange openerp

当用户从表单中选择酒店时,我试图向用户显示可能的便利设施列表。

为此,我有一个带有酒店名称的fields.selection字段,根据我想要填充笔记本的选择,我也在同一个视图中有fields.one2many字段,需要抓住从设施表到特定酒店的设施。

我可以使用onChange事件来填充更改的字段吗?

我有点困惑,我怎么能实现这一目标。任何提示都将非常感激。

1 个答案:

答案 0 :(得分:2)

是的,你可以:

您的XML将是:

<field name="hotel" on_change="hotel_change(hotel, context) />
<field name="other_field" />

您的方法是(如果版本&lt; 7.0,则从方法签名中删除上下文):

def hotel_change(self, cr, uid, ids, hotel, context = None):
   other_field_value = get_other_field_value(hotel)
   return {'value': {'other_field': other_field_value,},}

注意:

  1. 这是7.0。如果你的OpenERP版本&lt; 7.0从XML on change属性和hotel_change方法签名中删除上下文。
  2. on_change的回复是包含(可能)的字典:
    • 'value' - 字段和值的字典
    • '警告' - 包含两个字段,标题和消息的字典这就像回到用户的osv.osv_except一样。
    • 'domain' - 域名。
  3. 您可以返回表单/树上任何其他字段的值。
  4. 您无需在值中返回传入的酒店,但如果出现错误或您想要更改它,则可以将其退回。
  5. 如果您返回“other_field”的值,other_field也有on_change,则会调用on_change