介绍

二开时模型创建完毕并配好视图后对于基本的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 二次开发的方法的更多相关文章

  1. Odoo 二次开发教程(四)-只读、唯一性验证和ORM方法介绍

    一.只读和唯一性验证 只读的设置有两种方法,一种是实在字段定义时设置为只读,第二种是在页面视图中进行设置. 接前例,我们将学生(tech.student)的名字name字段设置成只读. 方法一:字段定 ...

  2. Odoo 二次开发教程【一】 Odoo 的安装

    一,安装的两种方式: 1) deb包安装: 此安装方式适用于简单不需要太多的人工干预,大多数插件都在deb中涵盖了.具体的步骤如下: 1.编辑 /etc/apt/source.list 文件,在末尾添 ...

  3. Odoo 二次开发教程(五)-新API的介绍与应用

    [关于odoo新API的介绍,Internet上资料很少,或者不够完整详实,这会对初学者造成很大的困惑,本篇的目的就是希望能帮助新手了解新API的大概] odoo 新api的实现是借助于python装 ...

  4. odoo 二次开发的一些原理

    一:self是什么 目前新版的Odoo中使用到的self,是对  游标cr.用户ID.模型.上下文.记录集.缓存  的封装. 我们可以通过 self.XX 获取到这些封装的东西,比如:self.cr. ...

  5. Odoo 二次开发教程(三)-第一个Model及Form、Tree视图

    创建完我们的模块,接下来我们就要为我们的模块添加一些对象.今天我们将要创建一个学生对象(tech.student)和一些基本的属性,并将用form和tree视图将其展示出来: 一. 创建tech.st ...

  6. Odoo 二次开发教程(二)-模块的基础构建

    注:本篇及后续均以8.0为基础. 一. Odoo模块的构成 __init__.py 文件是python包导入所必须的文件,内容可以为空,通常情况下我们用来导入自己写的py文件. __openerp__ ...

  7. odoo二次开发 tips

    1.model属性 每个对象(即class)一般由字段(变量)和函数组成,每个对象对应着数据库中的一张表,驼峰命名方式 models.Model 基础模块,会根据字段和模型名在后台数据库生成对应得表文 ...

  8. odoo 二次开发小记-----不定时更新

    一.odoo中 页面上字段变化引起其他字段范围变化-onchange @api.onchange('company_id') def onchange_parent_id(self): return ...

  9. Odoo二次开发

    Odoo 点击进入

随机推荐

  1. Spring思维导图(AOP篇)

    什么是aop AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP允许 ...

  2. SVM之SMO算法(转)

    支持向量机(Support Vector Machine)-----SVM之SMO算法(转) 此文转自两篇博文 有修改 序列最小优化算法(英语:Sequential minimal optimizat ...

  3. "软掩膜"和“硬掩膜”-智能IC卡

    目录 一.“软掩膜”和“硬掩膜”... 2 二.EMV迁移进程... 3 三.PBOC规范和EMV规范对比... 3 四.总结... 5 五.关于SDA和DDA. 6 一.“软掩膜”和“硬掩膜” “软 ...

  4. CMDB小练习

    为什么要用CMDB? 因为公司之前统计资产信息用的是excel表格,随着业务的增加和信息的变更,这个表格变得越来越乱,所以我们就想着编写出一套自动管理资产信息的系统,实现自动管理资产信息 三种方案? ...

  5. scala初学笔记

    tips: 1.函数的定义: def addOne(m: Int): Int = m + 1 m为参数,要指定其类型,Int: 后边跟着返回值的类型,Int= 后边是函数的内部 2.匿名函数: (x: ...

  6. dbcp的销毁

    使用commons-dbcp-1.2.2.jar的DataSource,发现每次动态编译后连接池中的连接不会释放,新的连接池建立有mssql多出一组连接,只有重新启动tomcat或weblogic才可 ...

  7. UDP问题

    这两天使用C#的UdpClient,本机的服务是采用MFC的socket发的,用C#做客户端,然后客户端启动时,出现该条错误信息 ==通常每个套接字地址(协议/网络地址/端口)只允许使用一次. 笔记的 ...

  8. Ceph介绍

    1. 介绍 云硬盘是IaaS云平台的重要组成部分,云硬盘给虚拟机提供了持久的块存储设备.目前的AWS 的EBS(Elastic Block store)给Amazon的EC2实例提供了高可用高可靠的块 ...

  9. javascript总结39: 元素获取的常见问题

    1 定义id属性的元素,不获取直接使用 由于id名具有唯一性,部分浏览器支持直接使用id名访问元素,但不是标准方式,生产环境下不推荐使用. 2 元素是对象 获取到的元素是DOM对象 ,DOM对象也有数 ...

  10. [可行]setoolkit生成木马软件远程控制实例

    查看原文 选1,social-ensineering attacks 选4,create a payload and listener 选2,Windows Reverse_TCP Meterpret ...