odoo 方法之间如何传递context
-
如下代码,第一个方法中
click_ready_button()
获取了context的值,同时新增一个键到context,需要把context的值同步到调用的方法update_status()
中。问题:
第二个方法获取context,会发现第一个方法中update后的键没有,context的作用域也是方法内部吗?如果实现我说的传至,第二个方法增加个参数context=context
吗?注:
方法click_ready_button()
的context值来源于视图,方法update_status()
单独调用的话,context来源于视图,如果是被click_ready_button()
方法调用的话,就需要用到被调用方法的context了。@api.multi def click_ready_button(self): context = dict(self._context or {}) section = context.get('section', False) if section: if section == 'dfs': self.update(state='progress') self.with_context(context) self.update_dfs_status()
@api.one def update_status(self): context = dict(self._context or {}) state = context.get('state', False) if state: self.dfs_status = state
-
如果是被click_ready_button()方法调用的话,就需要用到被调用方法的context了。
通过
with_context()
可以修改context
并往下传递。
相关文档:https://www.odoo.com/documentation/10.0/reference/orm.htmlwith_context([context][, **overrides]) → records
这里描述是通过
with_context()
会返回一个添加了新context
的recordse
t,原来的recordset
(你的self
)是不会被修改的,你代码里面并没有取得新recordset
并通过它调用其他方法,可以这样写:@api.multi def click_ready_button(self): ... self.with_context(key=value).update_status() ...