分解OpenERP lambda

时间:2013-10-21 10:27:31

标签: python lambda openerp

在我的OpenERP应用程序中,我有一个我想要理解的lambda(currency_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,
   }

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

  • 从表 res_users 开始,其中包含 company_id 字段
  • 使用浏览命令访问已连接的记录

浏览功能的原型为:浏览(cr,uid,ids,context = None)。我们将 uid 作为 ID 传递给它。 为什么我们传递的是uid而不是id?

res_company 表格中包含 currency_id 字段。

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

类似的问题 what is the reason of using _defaults and lambda in python for openerp development?

1 个答案:

答案 0 :(得分:1)

你是对的:我们确实希望将ID传递给browse。但是,在这种情况下,uid当前登录的res.users对象的ID 。因此,

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

返回登录用户对应的browse_record对象。此用户有一个与之关联的公司(通过company_id),该公司有一种货币(currency_id),我们使用该货币的ID作为此用户执行任何操作的默认货币。