我正在尝试将活动ID传递给弹出窗口,以便在我的函数中我可以访问调用者对象的实际状态。
为此,我做了以下事情。在XML视图中:
<page string="Opinions">
<field name="opinion_ids" context="{'generic_request_id': active_id}" >
<tree delete="false">
<field name="request_state" />
<field name="opinion_request_date" />
<field name="requestor" />
(...)
在python中我有:
_defaults={
'state': 'requested',
'opinion_request_date': lambda *a: datetime.date.today().strftime('%Y-%m-%d'),
'request_state': lambda self, cr, uid, context: self._get_request_state(cr, uid, context=context), #store the state of the request when opinion was asked
(...)
}
(...)
def _get_request_state(self, cr, uid, context=None):
ids = context.get('generic_request_id', False)
#import pdb; pdb.set_trace()
return self.pool.get('generic.request').browse(cr, uid, ids, context).state
在pdb中我意识到&#34; ids&#34;是错误的,因为上下文中没有generic_request_id变量...
(Pdb) p ids
False
(Pdb) p context
{'lang': 'en_US', 'no_store_function': True, 'tz': False, 'uid': 1}
任何人都知道这样做的方法吗?
答案 0 :(得分:2)
我最终使用工作流程功能,无需上下文
由于我的opinions
对象与many2one
对象有requests
连接,因此父请求的id
存储在generic_request_id
字段中。
创建后,我的工作流程会被触发,我会使用新值state
更新字段request_state
,并将值存储在我的调用对象中。
def request_opinion(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'state': 'requested', 'request_state': self.browse(cr, uid, ids, context=context)[0].generic_request_id.state })
return True
这样我解决了我的问题 我将此留在这里,希望这将有助于将来的某个人!