Python 分解开放式lambda

Python 分解开放式lambda,python,lambda,openerp,Python,Lambda,Openerp,在我的OpenERP应用程序中,我有一个我试图理解的lambda(currency\u id): 到目前为止,我知道它正在这样做: 从表res\u users开始,它有一个公司id字段 使用浏览命令访问连接的记录 browse函数的原型为:browse(cr、uid、ids、context=None)。我们将uid作为id传递给它为什么要传递uid而不是ID? res_company表具有货币id字段 然后我假设它使用外键通过OpenERP的ORM访问它ORM如何知道如何连接到**res_c

在我的OpenERP应用程序中,我有一个我试图理解的lambda(currency\u id):

到目前为止,我知道它正在这样做:

  • 从表res\u users开始,它有一个公司id字段
  • 使用浏览命令访问连接的记录
browse函数的原型为:browse(cr、uid、ids、context=None)。我们将uid作为id传递给它为什么要传递uid而不是ID?

res_company表具有货币id字段

然后我假设它使用外键通过OpenERP的ORM访问它ORM如何知道如何连接到**res_company字段**

类似问题
您是对的:我们确实希望将ID传递给
浏览
。但是,在本例中,
uid
是当前登录的
res.users
对象的id。因此,

self.pool.get('res.users').browse(cr,uid,uid,c)


返回与登录用户对应的
browse\u记录
对象。此用户有一个与其关联的公司(通过
公司id
),该公司有一个货币(
货币id
),我们使用该货币的id作为此用户所做任何事情的默认货币。

您是对的:我们确实希望将id传递给
浏览
。但是,在本例中,
uid
是当前登录的
res.users
对象的id。因此,

self.pool.get('res.users').browse(cr,uid,uid,c)

返回与登录用户对应的
browse\u记录
对象。此用户有一个与其关联的公司(通过
公司id
),该公司有一种货币(
货币id
),我们使用该货币的id作为此用户所做任何事情的默认货币

_defaults = {
       'display_type': True,
       'journal_ids': [],
       'target_move': False,
       'currency_id': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.currency_id.id,
   }