Odoo v10 @onchange(stage_id)不适用于stage_id小部件字段。当我在表单主体中添加简单字段时,它可以工作,但不能与原始字段一起使用:

<field name="stage_id" widget="statusbar" clickable="True"/>

class TaskExtension(models.Model):
    _name = 'project.task'
    _inherit = ['project.task']

    @api.model('stage_id', 'date_deadline')
    def _onchange_responsible(self):
        self.user_id = self.stage_id.responsible


    user_id = fields.Many2one('res.users',string = 'Assigned To',computed = _onchange_responsible,store=True)

最佳答案

如果状态栏是可单击的,则不会调用onchange方法。它将直接调用write方法。


因此,在这种情况下,您需要处理write方法。

@api.multi
def write(self, vals):
    res = super(class_name, self).write(vals)
    ### your logic
    return res


如果要调用onchange函数,则可以使用@ api.onchange装饰器。

如果您要调用没有对象的任何方法(使用模型引用/空白记录集),则将使用@ api.model。

@ api.onchange将用于在更新一个或多个字段的值时调用函数。

@api.onchange('field1', 'field2')
def function_name(self):
    # your logic here like:


最后,您的方法应如下所示:

@api.onchange('stage_id')
def on_change_stage_id(self):
    self.user_id = self.stage_id.responsible



  在odoo onchange方法字段中,我必须可用(可见/不可见)
  表单视图,否则它将不起作用。

关于python - Odoo v10 @onchange(stage_id)不适用于<field name =“stage_id”部件=“statusbar” clickable =“True”/>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45144465/

10-12 21:39