1

我想以交互方式创建新的 Odoo/OpenERP 产品。我已经导入了插件:

python

>>> import openerp
>>> openerp.tools.config.parse_config(['--addons-path=addons'])
>>> from openerp.addons.product import product
>>> p = new product.product_product()
SyntaxError: invalid syntax

>>> p = product.product_product()
>>> type(p)
NoneType   # no luck here either

# And then there is...

>>> product.product_product.create()

TypeError: unbound method create() must be called with product_product instance as first argument (got nothing instead)

# Ok I get that, but how do I create a product_product instance?

# And this one is not very clear either:

>>> product.product_product.create_instance()

TypeError: create_instance() takes exactly 3 arguments (1 given)

create_instance不幸的是,文档字符串不是很有帮助,并且ack-grep create_instance在插件目录中没有给我任何结果。

我一直在寻找好的osv(Odoo ORM)示例,但到目前为止运气不佳。

4

3 回答 3

2

ERPpeek使这变得容易得多。

$ sudo pip install erppeek
$ erppeek --server ... -d ... -u ... -p ... --verbose

>>> prod = model('product.product')
>>> prod.create({ 'name': 'Test Produkt'})

ERPpeek 截图

于 2014-07-29T16:56:00.547 回答
1

OpenERP 的“ORM”有点棘手,而且文档很少。

但是,我们可以阅读资料并理解,期待什么样的魔法:

# 1. Set modules path, like done above. 
import openerp
openerp.tools.config.parse_config(['--addons-path=addons'])

# 2. Obtain cursor and pool of models. 
db, pool = openerp.pooler.get_db_and_pool('dbname')

# 3. Import the model, that you want to create, like done above. 
from openerp.addons.product import product

# 4. Initialize database cursor
curr = db.cursor()

# 5. Create an instance of the model
p = product.product_product.create_instance(pool, curr)

# 6. Now create a model with values
product.product_product.create(p, curr, 1, {'name':'Test2'})
于 2014-07-15T06:02:33.663 回答
0

另一种以交互方式和远程方式使用 OpenERP/Odoo orm 的方法是使用Openerp Proxy lib/cli。它有 IPython shell,以及交互式处理 OpenERP/Odoo 数据的工具。

在您第一次安装并运行 openerp_proxy shell 中:

$ pip install openerp_proxy
$ openerp_proxy

然后连接到数据库:

>>> db = session.connect()  # all connection related info will be asked here

并创建产品:

>>> product_obj = db['product.product']  # get product model
>>> product_id = product_obj.create({'name': 'My cool product'})

(有关更多信息,请阅读文档

(并且在未来的版本中将实现一些语法糖)

于 2014-08-05T08:20:05.530 回答