我在odoo10中有两个字段,我想为其中一个添加@onchange
函数。
在一个字段中,我添加了三个工作流,在第一个工作流work1
中我添加了两个阶段(创建,新建)。同样,对于第二个work2
和第三个work3
,我添加了两个阶段(草稿,升级)和(分配,待处理)。
当我从工作流程字段中选择work1
时,相关的阶段应显示在阶段字段中。那么,有人能解决这个问题吗?
我的python代码如下:
work_flow_stage = fields.Many2one('stage.workflow', string="Work Flow", change_default=True, default=_work_flow_status)
work_stage = fields.Many2one('partner.state', string="Stage")
@api.onchange('work_flow_stage', 'work_stage')
@api.multi
def _work_flow_status(self):
stage = self.env['stage.workflow'].search([('work_stage', 'in', 'work_flow_stage')], limit=1)
print "stage", stage
return stage
答案 0 :(得分:0)
该方法不会为您当前的work_stage分配任何内容,它只返回值,该值将在执行后被解除。
我假设您work_stage
中的字段stage.workflow
相同。
如果您想通过@api.onchange
执行此操作,可以通过以下两种方式实现:
@api.onchange('work_flow_stage')
def _onchange_work_flow_stage(self):
return {
'value': {
'work_stage': self.work_flow_stage.work_stage.id
}
}
# ========= OR ===========
self.work_stage = self.work_flow_stage.work_stage.id
可能有可能使用关系来执行此操作,例如:
work_flow_stage = fields.Many2one('stage.workflow', 'Work Flow', change_default=True)
work_stage = fields.Many2one('partner.state', 'Stage', related='work_flow_stage.work_stage')
但是,当您立即更改work_flow_stage时,我不确定它是否有效。请发送反馈。
希望,这会有所帮助。