如何在OpenERP中为州和国家编写onchange函数
_coloumns={'state_id': fields.many2one("res.country.state", 'State',required=True),
'country_id': fields.many2one('res.country', 'Country',required=True),
} # in my python file
# my xml file contains this code
<group col="4" colspan="4">
<field name="permanent_address" colspan="4"/>
<field name="birthday"/>
<!--<field name="department_id" on_change="onchange_department_id(department_id)"/>-->
<field name="unit"/>
<!--<field name="vertical_id"/>-->
<field name="gender"/>
<field name="city1"/>
<field name="state_id"/>
<field name="country_id"/>
<field name="mobile"/>
<field name="email"/>
<field name="blood_group"/>
<field name="pan_no"/>
<field name="marital"/>
<field name="anniversary_date" attrs="{'invisible':[('marital','!=','married')]}"/>
</group>
我想要的效果是:如果我在一个输入框里输入州的名字(比如“马哈拉施特拉”),那么国家的名字(“印度”)会自动填上。
1 个回答
1
正常的步骤是:
给状态字段(state_id)添加一个变更方法
on_change="state_id_change(state_id, context)"
把这个变更方法加到你的模型里。
def state_id_change(self, cr, uid, ids, state_id, context = None): values = {'country_id': False} if state_id: state = self.pool.get('state_model').browse(cr, uid, state_id, context = context) values['country_id'] = state.country_id.id return {'value': values}
需要注意的是,如果用户清空了状态,这样会同时清空国家;但如果选择了一个状态,系统会查找相关的国家ID并返回。你可以在 on_change
方法里放任何你想要的内容,只要它能返回一个字典。
这里假设你使用的是 OpenERP 7。如果你用的是 6 版本,就不要在 XML 的 on_change
属性里加 context
参数。
最后一点,你的模型里有个拼写错误,_columns
拼错了。