Odoo shell 提供了一个简便的操作 Odoo的交互界面,
从 odoo 9.0 开始就是标准功能,
无需安装第三方应用。

本文基于Odoo10 说明 Odoo Shell以及 Odoo ModelClass 、Model、model、recordset 之间的关系 [注意:大小写是有特殊含义]

Odoo Shell是
通过在 cli/command.py#commands{} 注册 Shell command 来实现的。

首先,Odoo支持的 command 都是基于 command 基类,而 command 基类
则通过

它的
元类
初始化的时候,
往 commands{} 注册支持的 command.

而 Shell command.

而从 Odoo 10 开始, Shell 支持
多种
终端,通过参数shell-interface 传递给Odoo shell,支持以下终端类型

  1. ipython
  2. ptpython
  3. bpython
  4. python,如果不指定,则使用Python

运行 Odoo shell

执行
命令 python odoo-bin shell -c ..\t.conf --shell-interface ipython

以 ipython 交互界面
运行 Odoo shell. 启动之后

出现 ipython 终端提示符

Odoo shell启动之后,只提供了
以下几个变量

变量

类型

env

odoo.api.Environment 对象

odoo

odoo 模块

openerp

odoo 模块

self

res.users(1,) 记录

registry 是 Odoo实例维护的信息中心,可以通过 env.registry 获取

通过 env.registry.models 可以
获取当前 Odoo实例
的模型列表,
它返回的结果是,ModelClass 和 Model 字典键值对,例如

查看下
常用的
模型,例如 product.product

product.product 是 ModelClass ; 而 odoo.api.product.product 则是 Model

也可以通过 env['product.product'] 获取 Model

而这个 Model 本身就是 odoo.api.product.product

再开看看 odoo.api.product.product 的基类

从注册表
获取 odoo.api.product.product 对应的 Model Class,
发现 product.product 是在所有
定义/扩展过 product.product 模型的
模型基础上
再组装出来的。

Odoo Shell 操作 Odoo 记录

查询产品

env['product.product'].search([])

遍历查看产品的名称

for prod in env['product.product'].search([]):

print prod.name

修改产品的属性

例如修改 id = 1 产品的名称

只要能取得模型,模型的一切方法都能调用,
标准的方法

方法

必要参数

选参

search

domain

search_count

domain

search_read

domain

browse

copy

copy_data

create

default_get

name_get

read

read_group

unlink

write

update

vals 字典

提示

Odoo 的模型其实是
转包过一次的,并不是 product.product,而是 odoo.api.product.product 而且 Model 是
通过 Model Class 来进行实例化出来的。

严格意义上来讲,在写Odoo 模型Model 时,其实是在
写 Model Class 的父类, 最终这些 父类会 汇总 派生出 Model Class,进而实例化为 model,而recordset 也是 Model Class 衍生出来的

Odoo Shell的更多相关文章

  1. 第九章 Odoo 12开发之外部 API - 集成第三方系统

    Odoo 服务器端带有外部 API,可供网页客户端和其它客户端应用使用.本文中我们将学习如何在我们的客户端程序中使用 Odoo 的外部 API.为避免引入大家所不熟悉的编程语言,此处我们将使用基于 P ...

  2. 第七章 Odoo 12开发之记录集 - 使用模型数据

    在上一篇文章中,我们概览了模型创建以及如何从模型中载入和导出数据.现在我们已有数据模型和相关数据,是时候学习如何编程与其进行交互 了.模型的 ORM(Object-Relational Mapping ...

  3. 【odoo14】odoo 14 Development Cookbook【目录篇】

    网上已经有大佬翻译过odoo12并且在翻译odoo14了.各位着急的可以自行搜索下... 这本书是为了让自己从odoo12转odoo14学习.也是为了锻炼下自己... odoo 14 Developm ...

  4. odoo 10.0部署shell

    环境ubuntu16+nginx+python2.7.12+postgresql9.5+odoo 10.0 community #!/bin/bash #author:guoyihot@outlook ...

  5. 第二章 Odoo的安装与部署

    Odoo的官方推荐是Ubuntu Server,所以,我们这里也以Ubuntu Server为例.当然,其他系统也是可以的,只不过安装起来相比Ubuntu 会显得稍微折腾,限于篇幅,本书不对其他系统的 ...

  6. 如何在CentOS 7.x中安装OpenERP(Odoo)

    各位好,这篇教程关于的是如何在CentOS 7中安装Odoo(就是我们所知的OpenERP).你是不是在考虑为你的业务安装一个不错的ERP(企业资源规划)软件?那么OpenERP就是你寻找的最好的程序 ...

  7. odoo.cli.main()做了什么?

    先把代码贴过来 def main(): args = sys.argv[1:] # The only shared option is '--addons-path=' needed to disco ...

  8. odoo.cli.main()指的是哪里?OpenERP的第二根线头儿

    接上回,odoo-bin中调用了odoo.cli.main(),去哪儿找? cli目录容易找 跟随__init__.py的脚步 import logging import sys import os ...

  9. Odoo启动过程

    [本文基于odoo9源码编写] odoo包含的服务有 db object report workflow web[wsgi] Odoo以wsgi 规范提供Web及Web服务db/object/repo ...

随机推荐

  1. 快速卸载VS2015的办法

    1.以管理员身份运行CMD: 2.在CMD里输入F:\>vs_enterprise.exe /uninstall /force

  2. R12_专题知识总结提炼-AR模块

    应收模块简介 应收模块是用来为企业提供应收款管理的模块. 当企业销售一笔商品或者发生其他影响收入和现金的业务的时候,需要在应收模块记账. 本文档以R12为例,11i可参考,只针对简单业务情况考虑,将应 ...

  3. Java上面出现这个错误如何解决关于XML的

    Java上面出现这个错误如何解决关于XML的 2015-01-07 14:49 hejiashun11325 | 分类:JAVA相关 | 浏览265次 The type org.xmlpull.v1. ...

  4. javascript date picker

    一个简洁的date picker <html><head><meta http-equiv="Content-Type" content=" ...

  5. pdo 整套类的封装,保存修改查询

    <?php /** * */ class Db{ private $host = ''; private $port = ''; private $user = ''; private $pas ...

  6. js判断页面是pc打开还是手机打开

    <script type="text/javascript"> function browserRedirect() { var sUserAgent = naviga ...

  7. Google V8编程详解(序)Cloud App

    此系列文章转载于此http://blog.csdn.net/feiyinzilgd/article/details/8247723          应用程序发展到今天,应用程序的概念也在不断地发生着 ...

  8. Go Data Structures: Interfaces

    refer:http://research.swtch.com/interfaces Go Data Structures: Interfaces Posted on Tuesday, Decembe ...

  9. UNICODE 7.0定义的表情符

    td.graph { font-size:24px; } UNICODE 7.0定义了78个表情符,从0x1F600到0x1F64F(其中0x1F643和0x1F644没有定义).下表中列出了这些表情 ...

  10. iOS架构基础

    1.概念:架构其实是一个设计上的东西,它可以小到类类之间的交互,可以大到不痛的模块之间,可以说不痛的业务部门之间的交互都可以从架构的层面去理解它. 2.解耦 方法一:代理 方法二:通知