如何在Python中交互式地创建Odoo/OpenERP产品实例?

2024-04-23 21:18:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我想交互式地创建新的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_instancedocstring并没有很好的帮助,ack-grep create_instance也没有在addons目录中给出任何结果。在

我一直在寻找好的osv(odoorm)示例,但到目前为止还没有太多的运气。在


Tags: andinstanceodooimportconfig产品iscreate
3条回答

ERPpeek使这更容易。在

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

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

ERPpeek screenshot

另一种以交互方式远程使用OpenERP/odoorm的方法是使用Openerp Proxylib/cli。它有ipythonshell,以及交互处理OpenERP/Odoo数据的工具。在

在首次安装并运行openerp_proxy shell时:

$ pip install openerp_proxy
$ openerp_proxy

然后连接到数据库:

^{pr2}$

并创建产品:

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

(如需了解更多信息,请阅读docs

(在将来的版本中,将实现一些语法sugar)

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'})

相关问题 更多 >