Odoo交互式命令行shell

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()