Odoo Shell
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,支持以下终端类型
- ipython
- ptpython
- bpython
- 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的更多相关文章
- 第九章 Odoo 12开发之外部 API - 集成第三方系统
Odoo 服务器端带有外部 API,可供网页客户端和其它客户端应用使用.本文中我们将学习如何在我们的客户端程序中使用 Odoo 的外部 API.为避免引入大家所不熟悉的编程语言,此处我们将使用基于 P ...
- 第七章 Odoo 12开发之记录集 - 使用模型数据
在上一篇文章中,我们概览了模型创建以及如何从模型中载入和导出数据.现在我们已有数据模型和相关数据,是时候学习如何编程与其进行交互 了.模型的 ORM(Object-Relational Mapping ...
- 【odoo14】odoo 14 Development Cookbook【目录篇】
网上已经有大佬翻译过odoo12并且在翻译odoo14了.各位着急的可以自行搜索下... 这本书是为了让自己从odoo12转odoo14学习.也是为了锻炼下自己... odoo 14 Developm ...
- odoo 10.0部署shell
环境ubuntu16+nginx+python2.7.12+postgresql9.5+odoo 10.0 community #!/bin/bash #author:guoyihot@outlook ...
- 第二章 Odoo的安装与部署
Odoo的官方推荐是Ubuntu Server,所以,我们这里也以Ubuntu Server为例.当然,其他系统也是可以的,只不过安装起来相比Ubuntu 会显得稍微折腾,限于篇幅,本书不对其他系统的 ...
- 如何在CentOS 7.x中安装OpenERP(Odoo)
各位好,这篇教程关于的是如何在CentOS 7中安装Odoo(就是我们所知的OpenERP).你是不是在考虑为你的业务安装一个不错的ERP(企业资源规划)软件?那么OpenERP就是你寻找的最好的程序 ...
- odoo.cli.main()做了什么?
先把代码贴过来 def main(): args = sys.argv[1:] # The only shared option is '--addons-path=' needed to disco ...
- odoo.cli.main()指的是哪里?OpenERP的第二根线头儿
接上回,odoo-bin中调用了odoo.cli.main(),去哪儿找? cli目录容易找 跟随__init__.py的脚步 import logging import sys import os ...
- Odoo启动过程
[本文基于odoo9源码编写] odoo包含的服务有 db object report workflow web[wsgi] Odoo以wsgi 规范提供Web及Web服务db/object/repo ...
随机推荐
- rt—移植笔记1
将rtt源码往stm32f407移植的时候,源码串口打印引脚设置有误,以下是源码引脚配置. 以下是原理图 可见配置有误.
- Tomcat安装后,远程IP无法访问的问题。
我在使用阿里云与聚石塔的时候,发现Tomcat启动后,本地可以访问,但是外网无法访问,即使关闭防火墙也无法访问. 原因是 云平台的网络拦截. 阿里云:有一个入网规则 和 出网规则 ,流入数据端口 流 ...
- linux chmod 755
chmod是Linux下设置文件权限的命令,后面的数字表示不同用户或用户组的权限. 一般是三个数字: 第一个数字表示文件所有者的权限 第二个数字表示与文件所有者同属一个用户组的其他用户的权限 第三个数 ...
- C# ADO.NET (sql语句连接方式)(查询)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- C# 小例子
数组冒泡排序(升序排序): , , , , , , , , , , , }; //第一种 ; i < num.Length - ; i++) { ; j < num.Length - i ...
- delphi中midas是什么
Delphi中MIDAS到底是什么呢?和他相关组件是什么呢? MIDAS(Multitiered Distributed Application Services)多层分布式应用服务. Del ...
- JMS介绍【转载】
什么是JMS JMS(Java Message Service) 即Java消息服务.它提供标准的产生.发送.接收消息的接口简化企业 应用的开发.它是J2EE规范的一部分,定义的接口标准,针对不同的厂 ...
- 需要交互的shell编程——EOF(转载)
在shell编程中,”EOF“通常与”<<“结合使用,“<<EOF“表示后续的输入作为子命令或子shell的输入,直到遇到”EOF“, 再次返回到主调shell,可将其理解为分 ...
- html中表格的制作
<table summar="给表格添加摘要".> <captioan> 给表格添加标题 </caption> <tr> <t ...
- DB2 syntax error
Error infomation: An unexpected token "JOIN" was found following "". Expected t ...