Onchange 里面传入的 one2many 的解读
-
onchange 里面 就是把 传入的参数 print 出来
<br /> def onchange_sale_order_contract_lines(self, cr, uid, ids,sale_order_contract_lines, context=None ):<br /> # res = {'value':{}}<br /> # return res<br /><br /> if sale_order_contract_lines:<br /> for contract_line in sale_order_contract_lines:<br /> print contract_line<br /> return res<br />
运行若干次,结果如下:
下面 1,2 两行是 之前已经输入,修改了
3,4,5 行是新输入的,尚未保存[1, 1, {u'notes': u'bbbb ', u'metric_spec': u'aaaaaaaaaaaa'}]<br />[1, 2, {u'notes': u' ', u'metric_spec': u'bbbbbbbbbbbbbb'}]<br />[0, False, {u'input_value': 0, u'input_type': u'1', u'notes': u'ccc', u'stratify_base': 100, u'active': 1, u'metric_spec': u'ccccc'}]<br />[0, False, {u'input_value': 0, u'input_type': u'1', u'notes': u'dd', u'stratify_base': 100, u'active': 1, u'metric_spec': u'ddddddddddd'}]<br />[0, False, {u'input_value': 0, u'input_type': u'1', u'notes': u'ee', u'stratify_base': 100, u'active': 1, u'metric_spec': u'eeeeeee'}]<br />
下面修改了 第三行[4, 1, False]<br />[4, 2, False]<br />[1, 3, {u'notes': u'ccccccccccc', u'metric_spec': u'cccccccccccccccccccccccccccccc'}]<br />[4, 4, False]<br />[4, 5, False]
单独修改 第三行 的 metric_spec[4, 1, False]<br />[4, 2, False]<br />[1, 3, {u'metric_spec': u'ccccccccccccccc'}]<br />[4, 4, False]<br />[4, 5, False]
[attachimg=1]
大概解读一下,修改后传入的 sale_order_contract_lines是一个 list ,
一行数据对应 一个元素
每个元素(行),又是一个列表,
此列表 为三个元素,
第一个 不明,
第二个 序号
第三个 如果 为 Fasle,说明改行没有修改,
如果是一个字典,就是 被修改的字段名称,以及修改后 值
~~~~~~~~~~~~~~~~~~~
突然反映过来了,
我还煞有其事的 分析半天,这就是 接触过多次的东西,文档中有
0, 0, { values }) link to a new record that needs to be created with the given values dictionary
(1, ID, { values }) update the linked record with id = ID (write values on it)
(2, ID) remove and delete the linked record with id = ID (calls unlink on ID, that will delete the object completely, and the link to it as well)
(3, ID) cut the link to the linked record with id = ID (delete the relationship between the two objects but does not delete the target object itself)
(4, ID) link to existing record with id = ID (adds a relationship)
(5) unlink all (like using (3,ID) for all linked records)
(6, 0, [IDs]) replace the list of linked IDs (like using (5) then (4,ID) for each ID in the list of IDs)