1

私の OpenERP アプリケーションには、理解しようとしているラムダ (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,
   }

これまでのところ、私はそれがこれを行っていることを理解しています:

  • company_idフィールドを持つテーブルres_usersから始めます
  • 参照コマンドを使用して、接続されたレコードにアクセスします

ブラウズ機能のプロトタイプは、browse (cr, uid, ids, context=None) です。idsとしてuidを渡します。ID の代わりに UID を渡すのはなぜですか?

res_companyテーブルにはcurrency_idフィールドがあります。

次に、外部キーを使用して OpenERP の ORM 経由でアクセスしていると仮定します。ORM は **res_companyフィールドへの接続方法をどのように認識していますか?**

同様の質問 openerp開発のためにpythonで_defaultsとlambdaを使用する理由は何ですか?

4

1 に答える 1

1

あなたの言うとおりです。ID を に渡したいのですbrowse。ただし、この場合は、現在ログインしているオブジェクトuidの ID です。したがって、res.users

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

ログインしたユーザーにbrowse_record対応するオブジェクトを返します。このユーザーには、通貨 ( ) を持つ会社が ( 経由で) 関連付けられており、その通貨の ID を、このユーザーが行うすべてのデフォルトの通貨として使用します。company_idcurrency_id

于 2013-10-22T13:47:29.943 に答える