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/