Odoo shell是一个交互式命令行工具,它类似Python shell或Django shell一样,可以在开发过程中调试Odoo内置对象和API函数,比如:测试对象有哪些属性和方法,或是测试API调用的返回是否达到预期
在命令行输入下面指令即可启动Odoo shell:
python3 odoo-bin shell -c odoofile/odoo.conf -d test
shell类型
Odoo shell有下面几种类型
- ipython(需安装ipython)
- ptpython
- bpython
- python,默认使用python(无法按上输入历史命令,推荐使用ipython)
通过参数shell-interface可以指定shell类型,如下所示使用ipython启动shell
python3 odoo-bin shell -c odoofile/odoo.conf --shell-interface ipython -d test
shell变量
shell启动后提供以下几个变量
- env: odoo.api.Environment对象
- odoo: odoo模块
- openerp: odoo模块
- self: res.user(1,)记录
shell操作
1、获取模型列表
registry是Odoo实例维护的信息中心,通过env.registry获取
env.registry.models
可以获取当前Odoo实例的模型列表,返回ModelClass和Model字典键值对
2、查看常用模型
示例:product.product是ModelClass,odoo.api.product.product是Model
1) 获取model的两种方式
- env.registry.models.get(‘product.product’)
- env[‘product.product’]
2) 访问基类
odoo.api.product.product 的基类可以通过env.registry.get('product.product').__bases__
访问
3、操作记录集
- 查询产品
env['product.product'].search([])
- 遍历产品名称
rec.name
- 修改产品属性
rec.write()