odoo 二次开发的方法
介绍
二开时模型创建完毕并配好视图后对于基本的CRUD操作不需要再在代码中实现,框架会自动提供这些功能,但如果我们的开发需求不仅仅是对当前对象的CRUD时,就需要在框架原来方法的基础上扩展出一些自己所需要的操作。
odoo8以前与odoo8以后使用两种不同的model接口形式(odoo8两者都可使用),odoo8以前old api中,记录ids和上下文环境均通过参数传入def old_api (self, cr, uid, ids, context),比较凌乱,不建议使用。以下内容均为new api内容。

api装饰器
@api.model
封装不关联数据记录的Model对象,用于与数据库记录无关的逻辑方法,例如:create方法。
@api.multi
封装关联多个数据记录的Model对象,用于与数据库记录关联的处理方法。
@api.one
封装关联单条数据记录的Model对象,用于与单条数据库记录关联的处理方法。
@api.onchange
页面Fields值变更触发的调用方法,见下文中onchange
@api.constrains
对添加数据自定义约束。
@api.constrains(‘field_name1’,’field_name2’,…) def _check_field(self):
# 校验方法 不符合校验条件抛出异常
model方法
create 创建记录
原型:def create(self, vals)
vals:记录属性值字典
search 查找记录
原型:def search(self, args, offset=0, limit=None, order=None, count=False)
args:domain格式的条件列表;offset:结果忽略条数;limit:最大查询条数
read 读取记录属性值
返回指定ids记录的指定fields字段值,采用列表加字典的数据结构([{},{},…])返回。
原型:def read(self, fields=None, load='_classic_read'):
fields:列表可指定要读取的属性名称
search_read
原型:def search_read(self, domain=None, fields=None, offset=0, limit=None, order=None)
用法即search方法与read方法相结合。
unlink 删除记录
原型:def unlink(self)
write 修改记录
原型:def write(self, vals)
vals:修改属性值字典
onchange 页面变更触发事件
页面Field值发生变更时由前端js框架触发调用,一般用于控制页面元素联动。
原型:def onchange(self, values, field_name, field_onchange)
default_get 设置缺省值
原型:def default_get(self, fields_list)
name_get 设置记录显示名
原型:def name_get(self)
作者:好大一只粽子
链接:https://www.jianshu.com/p/3bea01aa8a17
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
odoo 二次开发的方法的更多相关文章
- Odoo 二次开发教程(四)-只读、唯一性验证和ORM方法介绍
一.只读和唯一性验证 只读的设置有两种方法,一种是实在字段定义时设置为只读,第二种是在页面视图中进行设置. 接前例,我们将学生(tech.student)的名字name字段设置成只读. 方法一:字段定 ...
- Odoo 二次开发教程【一】 Odoo 的安装
一,安装的两种方式: 1) deb包安装: 此安装方式适用于简单不需要太多的人工干预,大多数插件都在deb中涵盖了.具体的步骤如下: 1.编辑 /etc/apt/source.list 文件,在末尾添 ...
- Odoo 二次开发教程(五)-新API的介绍与应用
[关于odoo新API的介绍,Internet上资料很少,或者不够完整详实,这会对初学者造成很大的困惑,本篇的目的就是希望能帮助新手了解新API的大概] odoo 新api的实现是借助于python装 ...
- odoo 二次开发的一些原理
一:self是什么 目前新版的Odoo中使用到的self,是对 游标cr.用户ID.模型.上下文.记录集.缓存 的封装. 我们可以通过 self.XX 获取到这些封装的东西,比如:self.cr. ...
- Odoo 二次开发教程(三)-第一个Model及Form、Tree视图
创建完我们的模块,接下来我们就要为我们的模块添加一些对象.今天我们将要创建一个学生对象(tech.student)和一些基本的属性,并将用form和tree视图将其展示出来: 一. 创建tech.st ...
- Odoo 二次开发教程(二)-模块的基础构建
注:本篇及后续均以8.0为基础. 一. Odoo模块的构成 __init__.py 文件是python包导入所必须的文件,内容可以为空,通常情况下我们用来导入自己写的py文件. __openerp__ ...
- odoo二次开发 tips
1.model属性 每个对象(即class)一般由字段(变量)和函数组成,每个对象对应着数据库中的一张表,驼峰命名方式 models.Model 基础模块,会根据字段和模型名在后台数据库生成对应得表文 ...
- odoo 二次开发小记-----不定时更新
一.odoo中 页面上字段变化引起其他字段范围变化-onchange @api.onchange('company_id') def onchange_parent_id(self): return ...
- Odoo二次开发
Odoo 点击进入
随机推荐
- Spring.net页面属性注入
.条件spring.web程序集 1.1 system.web配置 <httpHandlers> <add verb="*" path="*.aspx& ...
- PLSA算法(转)
文章分类:综合技术 1. 引子 Bag-of-Words 模型是NLP和IR领域中的一个基本假设.在这个模型中,一个文档(document)被表示为一组单词(word/term)的无序组合,而忽略了语 ...
- mysql json格式数据处理
1.查询字段所对应的值: SELECT c.result_http->"$.create_time",json_extract(c.result_http,"$.e ...
- javascript总结35:DOM之给a注册点击事件, 阻止a标签的默认行为
给a注册点击事件时,有默认行为,阻止默认行为的方式: retrun false <!DOCTYPE html> <html lang="zh-CN"> &l ...
- UVa 11090 Going in Cycle!! (Bellman_Ford)
题意:给定一个加权有向图,求平均权值最小的回路. 析:先十分答案,假设答案是 ans,那么有这么一个回路,w1+w2+w3+...+wk < k*ans,这样就是答案太大,然后移项可得,(w1- ...
- java IO通过字节流,字符流 读出写入
一:通过字节流操作数据的写入,读出 /** * 通过字节流写入和读出 * @param args */ public static String filePath = "G:" + ...
- emacs-ide配置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; CEDET Configuration ;;;;;;;;;; ...
- 编写高质量代码改善C#程序的157个建议——建议129:泛型类型参数要以T作为前缀
建议129:泛型类型参数要以T作为前缀 作为一种约定,泛型类型的参数要以T作为前缀.如委托声明: Action<T1,T2> 其中,泛型类型参数名不应该处理成: Action<Arg ...
- SQL compute by 的使用 主要是针对与 GROUP BY 的区别
GROUP BY子句有个缺点,就是返回的结果集中只有合计数据,而没有原始的详细记录.如果想在SQL SERVER中完成这项工作,可以使用COMPUTE BY子句.COMPTE生成合计作为附加的汇总列出 ...
- Shell脚本中$0、$?、$!、$$、$*、$#、$@
1. $$Shell本身的PID(ProcessID) 2. $!Shell最后运行的后台Process的PID 3. $?最后运行的命令的结束代码(返回值) 4. $-使用Set命令设定的Flag一 ...