下面是我对xml和模型类的看法。我有一个表单来添加记录,它可以正常工作。 但我需要为子子onchange事件设置值。 我也是从documentation引用此链接。
这是模块GIT HUB REPO的完整代码:
<field name='selected_tea_workers_line_ids' nolabel='1'>
<tree string='List' readonly='1'>
<field name='tea_line_worker_id' invisible="0" />
<field name='worker_id' />
<field name='is_selected' />
</tree>
</field>
def on_change_division(self, cr, uid, ids, bpl_division_id):
v = {}
if bpl_division_id:
work_offer = self.pool.get('bpl.work.offer').browse(cr, uid, 2)
v['selected_tea_workers_line_ids'] = work_offer.selected_tea_workers_line_ids
if work_offer.selected_tea_workers_line_ids:
for record_item in work_offer.selected_tea_workers_line_ids:
v['tea_line_worker_id'] = record_item.selected_tea_workers_line_ids.tea_line_worker_id
v['worker_id'] = record_item.selected_tea_workers_line_ids.worker_id
v['is_selected'] = record_item.selected_tea_workers_line_ids.is_selected
return {'value':v}
这是一个想法:如果我选择公司 - &gt;分裂 - &gt;然后需要加载与该部门相关的所有工人(作为列表。他们有自己的名字和工作)。
下面,我添加了样本图片
GOT THE ANSWER
def on_change_division(self, cr, uid, ids, division_id):
v = {}
list_data = []
if division_id:
worker_ids = self.pool.get('bpl.worker').search(cr, uid, [('bpl_division_id', '=', division_id)])
for record in self.pool.get('bpl.worker').browse(cr, uid, worker_ids):
list_data.append({'worker_id': record.id})
v['selected_tea_workers_line_ids'] = list_data
return {'value':v}
积分需要user1576199
答案 0 :(得分:2)
我对你的代码感到困惑,我无法理解这段代码背后的登录是什么。你想做什么
但我将向您展示如何在更改功能
的one2many字段中设置值的一个示例def on_change_code_id(self, cr, uid, ids, code_id, context=None):
list_lines = []
result = {'value': {}}
req_obj = self.pool.get('code.requisition')
data = req_obj.browse(cr, uid, code_id)
for line in data.line_ids:
list_lines.append({'product_id': line.product_id.id or False,
'product_qty': line.product_qty or 0,
'name': line.product_id.name,
'product_uom': line.product_uom_id.id,
'date_planned': time.strftime('%Y-%m-%d')
})
result['value']['order_line'] = list_lines
return result
在您看到的代码中,我们必须返回dicts列表以在one2many中设置值,您必须提供one2many对象字段的所有必需值。希望这个帮助