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. StrangeIoc框架学习----在项目中实战

    最近,因为公司的项目一直在研究StrangeIoc框架,小有所得,略作记录. StrangeIoc是一款基于MVCS的一种框架,是对MVC思想的扩展,是专门针对unity开发的一款框架,非常好用. 一 ...

  2. ajax 对象创建 兼容各个浏览器

    <script> function createAjax(){ var request=false; //window对象中有XMLHttpRequest存在就是非IE,包括(IE7,IE ...

  3. css3 text-overflow属性

    页面: <ul> <li>· 测试测试测试测试测试测试</li> <li>· 测试测试测试测试测试测试</li> <li>· 测 ...

  4. Objective - C NSArray不可变数组和NSMutableArray可变数组

    OC中存储数据最常用 的两个容器就是数组和字典,而作为最常用的,应该了解这所有的特点,及用法. OC中的数组是一个容量,有序的管理了一系列元素,并且存放在数组里的元素,必须是对象类型. 不可变数组,见 ...

  5. C#绘制传感器代码

    //以下代码添加到任一窗口下即可        private int 旋转角度 = 0;        private int 边长 = 10;        protected override ...

  6. PHP 7 的新特性

    PHP7是最新出来的一个新的PHP的一个版本,而且新增了一些新的版本特性,下面我们来介绍一下: 1.速度上比HHVM会快一些,大概是PHP5版本的9倍左右,下面是做的一个实验: <?php $a ...

  7. C# MVC ( 将控制器的实体类注册到视图 )

    (1)控制器  代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; usin ...

  8. favicon.ico应用与正则表达式验证邮箱(可自动删除前后的空格)

    1.favicon.ico制作:favicon.ico可以ps制作;“shortcut icon”中间有一个空格 <head> <link rel="shortcut ic ...

  9. EF 底层基础方法

    1 using System; 2 using System.Data; 3 using System.Collections.Generic; 4 using System.Data.Entity; ...

  10. Using Redis to store php session

    Using Redis to store php session 默认情况下,php将会将session信息存储在文件系统上,在单机情况下没有问题,但是当系统负载增大,或者在对系统可用性要求很高的场景 ...