阶段

时间:2017-09-08 11:59:37

标签: python python-2.7 openerp odoo-10

我在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

1 个答案:

答案 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时,我不确定它是否有效。请发送反馈。

希望,这会有所帮助。