如何使用OnChange检索Many2one字段上的值?
学生应该在一个标准和一个组中注册......标准有多个组 所以我希望当我更改字段标准时...组字段应该使用该标准中的组进行更新
当我尝试这样做时,它会给我一个错误
'Expected singleton: fci.standard.groups(3, 4, 5, 6)'
我尝试更改标准字段时,组字段将更新为仅选择此标准中的组
这是我的字段
'standard_id': fields.many2one('fci.standard', string='Standard', required=True),
'group_id': fields.many2one('fci.standard.groups', string='Standard Group'),
这是我的功能
def on_change_standard(self, cr, uid, ids, standard_id, context=None):
val = {}
if not standard_id:
return {}
student_obj = self.pool.get('fci.standard')
student_data = student_obj.browse(cr, uid, standard_id, context=context)
val.update({'group_id': student_data.groups_ids.id})
return {'value': val}
这是我的xml
<field name="standard_id" on_change="on_change_standard(standard_id)" widget="selection"/>
<field name="group_id" widget="selection"/>
答案 0 :(得分:3)
您可以编辑代码并将域名添加到'group_id'
字段,如下所示
<field name="standard_id" widget="selection"/>
<field name="group_id" widget="selection" domain[('standard_id','=',standard_id)]"/>
并按照此更改编辑您的功能
def on_change_standard(self, cr, uid, ids, standard_id, context=None):
val = {}
if not standard_id:
return {}
student_obj = self.pool.get('fci.standard')
student_data = student_obj.browse(cr, uid, standard_id, context=context)
val.update({'group_id': [ g.id for g in student_data.groups_ids ]})
return {'value': val}
它会对你有用
再见
答案 1 :(得分:2)
无需为此更改方法,您可以通过将域应用于该字段来实现此目的。试试以下,
<field name="standard_id" widget="selection"/>
<field name="group_id" widget="selection" domain="[('standard_id','=',standard_id)]"/>