0

Python 言語で OpenERP モジュールの開発を学び始めました。私はインターネットでソースコードの例を見ていて、自分で学ぼうとしています。私は bben に Python コードを実行させましたが、_defaults とラムダの使用を理解できません。お気に入り :

 _defaults = {
        'name': lambda obj, cr, uid, context: '/',
        'state': 'draft',

    }

これら2つのノウハウを得るために、いくつかの言葉を教えてください。

提案を希望

ありがとう

4

2 に答える 2

0

@ArsalanSherwani: 基本的に、ラムダを使用せずに値の割り当てを行うこともできます。ラムダは、動的または計算された値が必要な場合にのみ使用する必要がありますが、静的な値を割り当てたい場合は、_default は単なる Dict であるため、直接割り当てることができます。行関数のラムダを知っているので、dict内で外部関数を呼び出して値を計算する代わりに、これはほとんどpythonicのみであり、OpenERPに固有のものは何もありません._defaultsに関する特別なことは、新しいレコードの作成を試みることができます。つまり、View で作成ボタンをクリックすると、_default_get メソッドが呼び出され、ORM の default_get メソッドがこのブロックから値を計算して値を返します。したがって、_defulat_Get を使用して _defaults balck 値の動作を変更することもできます。

@ArsalanSherwani : あなたのコードで

lambda obj, cr, uid, context: '/',

  • objObjectを参照してSelfください。つまり、それは現在のクラスそのものです。
  • cr: DB で SQL 操作を実行するためのデータベース カーソル オブジェクト :)
  • uidL は現在ログインしているユーザーです。
  • contextオブジェクト間のコンテキスト値を渡すためのディクテーションです。

osv.osvこのすべてのパラメーターは、 orから派生した任意のクラス メソッドのデフォルトでosv.Modelあり、このパラメーターはグローバルに使用できるため、必要なメソッドで使用できます。

于 2013-10-10T12:51:17.837 に答える