喜马拉雅APP:免费领取29天VIP会员
如何获取:下面链接中输入手机号,接收验证码领取,下载喜马拉雅APP使用
得到APP:免费听书两个月VIP
如何获取:打开得到APP——我的——卡券——兑换卡券——输入“平平安安”
电子图书免费读(电脑在线阅读)
机械工业出版社清华大学出版社,2月16日前北京外国语大学外语在线学习平台全国报刊索引,2月29日前,免费注册后,每个帐号每天可下载全文内容100次,50幅图片(图片库)
这个示例将创建一个菜单,点击触发一个客户端动作,关联js定义的对象,显示相应模板
这个示例包括下面三个文件
static/src/xml/client_action.xmlHelloJS显示<div>Display HelloJS</div>static/src/js/client_action.jsHomePage继承于web.AbstractActionHelloJS模板init方法和start方法HomePage对象注册为动作:HelloJS_tagviews/client_action.xmlweb.assets_backend加载JS文件HelloJS_tag1、定义模板文件static/src/xml/client_action.xml
1 | <?xml version="1.0" encoding="UTF-8"?> |
2、定义JS文件static/src/js/client_action.js
1 | odoo.define('hello.js', function (require) { |
3、创建视图文件views/client_action.xml
1 | <?xml version="1.0" encoding="UTF-8"?> |
4、在__manifest__.py文件中引入XML文件
1 | 'qweb': [ |
在Chrome浏览器的Console控制台中,使用console.log()命令可以输出js变量或字符串,但如何将这些输出保存到文件中呢
使用log4b.js可以实现输出保存到文件,这个功能可用于在console中使用xpath获取页面内容并保存到文件
1、载入log4b
js原生的console.log()无法输出到文件,下载log4b.js文件,复制log4b.js的内容到console中执行
2、创建log4b对象
在console中执行
var Log4b = new log4b();
3、输出内容
使用Log4b.log()替代console.log()来输出内容
4、导出到文件
使用Log4b.downloadLog()可以下载由Log4b.log()输出的内容
getLog: get log show on the console tab
downloadLog: download the log
clear: clear all saved log
log: write log
lines: get how many lines of log
search: search a string
self.realTimeLoggingOn = true; // log in real time (forwards to console.log)
self.useTimestamps = false; // insert a timestamp in front of each log
self.recordLogs = true; // set to false after you're done debugging to avoid the log eating up memory
self.maxLines = 2500; // if autoTrim is true, this many most recent lines are saved
self.lineMaxChars = 1500; // if one log is max than lineMaxChars, it will be cut
self.logFilename = 'log4b.txt'; // filename of log downloaded with downloadLog()
self.lineBreak = '\n\n';
Odoo shell是一个交互式命令行工具,它类似Python shell或Django shell一样,可以在开发过程中调试Odoo内置对象和API函数,比如:测试对象有哪些属性和方法,或是测试API调用的返回是否达到预期
在命令行输入下面指令即可启动Odoo shell:
python3 odoo-bin shell -c odoofile/odoo.conf -d test
Odoo shell有下面几种类型
通过参数shell-interface可以指定shell类型,如下所示使用ipython启动shell
python3 odoo-bin shell -c odoofile/odoo.conf --shell-interface ipython -d test

shell启动后提供以下几个变量

1、获取模型列表
registry是Odoo实例维护的信息中心,通过env.registry获取
env.registry.models可以获取当前Odoo实例的模型列表,返回ModelClass和Model字典键值对

2、查看常用模型
示例:product.product是ModelClass,odoo.api.product.product是Model
1) 获取model的两种方式
2) 访问基类
odoo.api.product.product 的基类可以通过env.registry.get('product.product').__bases__访问
3、操作记录集
env['product.product'].search([])
rec.name
rec.write()
实现后效果如图所示,增加了范围类型、范围开始日期、范围结束日期和一个生成按钮

1、开发前找到修改目标
首先激活开发者模式,通过菜单Settings | Technical | Sequences进入序列编辑界面,通过菜单Open Developer Tools | Edit View: Form查看表单视图,得到需要修改的模型为ir.sequence,视图为base.sequence_view(为了排除翻译导致的名称不一致,这里菜单名和截图使用英文的)

2、创建模块
进入自己的模块目录中,使用脚手架生成模块结构
cd C:/Project/odoo12-x64/source\odoo\custom-addons
C:\Project\venv\odoo12\Scripts\python.exe C:/Project/odoo12-x64/source/odoo-bin scaffold myapp_sequence

3、继承序列模型,添加设置日期范围的字段
1 | #models/models.py |
4、继承序列表单视图,添加字段和按钮
1 | <!-- views/views.xml --> |
其中
class="oe_edit_only oe_highlight" 表示按钮编辑时可见
attrs="{'invisible': [('use_date_range', '=', False)]}" 表示字段use_date_range为False时隐藏
5、为按钮添加事件函数
1 | #models/models.py |
6、安装并使用模块
从应用中安装这个模块,进入序列号编辑表单,选择范围类型,范围开始日期和结束日期,点击创建日期范围,将清除之前的日期范围,按照规则重新创建日期范围