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) (record id in db)
现在我可以访问
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

研究 OpenERP 的代码,然后:-)

其他不错的起点包括:

事情归结为使用 Python 的自省工具来找出用户提供的对象的结构并将该结构转换为例如 SQL 表定义和查询。

yams中,Schema对象由用户定义的类创建,这些类派生自EntityType具有metadefinition元类。这个元类列出了 的类属性EntityType并将它们存储在各种内部字段中。然后该schema2sql模块可用于将模式序列化为一组 SQL 表。

于 2012-04-19T09:18:55.573 回答