1

ここに OpenERP を開発する方法があります

class stock_incoterms(osv.osv):

_name = "stock.incoterms"
_description = "Incoterms"
_columns = {
    'name': fields.char('Name', size=64, required=True),
    'code': fields.char('Code', size=3, required=True),
    'active': fields.boolean('Active'),
}
_defaults = {
    'active': lambda *a: True,
}

stock_incoterms()
これは典型的な OpenERP モデルであり、テーブル名 stock_incoterms にマップされます。
columns プロパティは、テーブルの列を定義します。default プロパティは、各列のデフォルト値を定義します。

私の質問は次のとおりです。

これを Python で実装するにはどうすればよいですか?
stock_incoterms() を実行すると、OpenERP はこのモデルを読み取り、これらの定義された列を含むテーブルを生成します。
その後、このテーブルにレコードを作成したとします。次に、このクラスのモデルを教えてください、例:
stock_incoterm = stock_incoterms.get(1) (db のレコード ID)これで、 stock_incoterm.name stock_incoterm.codeに
アクセスできます 。 ……


このモデルの定義方法は一種のメタ プログラミングですが、Python での記述方法がわかりません。

背後にある詳細や、Python でのメタ プログラミングに関する良いリンクを教えてくれる人はいますか?

4

2 に答える 2

2

OpenERP 開発者ブックは、探し始めるのに最適な場所です。stock_incoterm という新しいテーブルを追加したいようです。新しいモジュールを開始し、テーブルを編集するための画面といくつかのメニュー項目とともにテーブルを追加することをお勧めします。開発者向けの本には、モジュールの開発に関する章があります。

すべての設定が完了したら、レコードのフィールドにアクセスするコードは次のようになります。

class stock_incoterms(osv.osv):
    # ...

    def do_something(self, cr, uid, ids):
        for stock_incoterm in self.browse(cr, uid, ids):
            name = stock_incoterm.name

            # ...
于 2010-08-27T21:08:14.113 に答える
0

Study OpenERP's code, then :-)

Other nice starting points include:

Things boil down to using Python's introspection facilities to find out the structure of the objects provided by the user and converting that structure to e.g. SQL table definitions and queries.

In yams, a Schema object is created by the user defined classes which derive from EntityType which has the metadefinition metaclass. This metaclass lists the class attributes of the EntityType and stores them in various internal fields. Then the schema2sql module can be used to serialize the schema as a set of SQL tables.

于 2012-04-19T09:18:55.573 に答える