介绍

二开时模型创建完毕并配好视图后对于基本的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. c语言的函数可以这样写,你见过吗?

    c语言的函数可以这样写,你见过吗?真的可以编译通过的.

  2. Linux 配置nfs

    原文:http://www.cnblogs.com/mchina/archive/2013/01/03/2840040.html 一.NFS服务简介 NFS 是Network File System的 ...

  3. 【转载】Maven+druid+MyBatis+Spring+Oracle+Dubbo开发环境搭建

    原地址:http://blog.csdn.net/wp1603710463/article/details/48247817#t16 Maven+druid+MyBatis+spring+Oracle ...

  4. 【转载】实战mysql分区(PARTITION)

    转载地址:http://lobert.iteye.com/blog/1955841 前些天拿到一个表,将近有4000w数据,没有任何索引,主键.(建这表的绝对是个人才) 这是一个日志表,记录了游戏中物 ...

  5. UVALive 7752 Free Figurines (瞎搞)

    题意:给定 n 个盒子,然后告诉你每个盒子在哪个盒子里,数值越大,盒子越大,给定你初态,和末态,问你最少要几步能完成,只有两种操作,一种是把一个盒子连同里面的小盒子放到一个空盒子里,另一种是把一个堆盒 ...

  6. 大型Unity手游《英雄之刃-最后之战》源码分析

    英雄之刃之最后一战是国内首款原创精品MOBA手游,是一款由前暴雪文案亲自操刀世界观,日韩专业团队打造美术场景,新加坡团队精心制作战斗音乐的旷世之作! 超快速的匹配对战.默契的团队协作给你带来意犹未尽的 ...

  7. Ubuntu建立WIFI热点

    网络共享 http://www.linuxidc.com/Linux/2014-07/104624.htm

  8. Alpha冲刺(七)

    Information: 队名:彳艮彳亍团队组长博客:戳我进入作业博客:班级博客本次作业的链接 Details: 组员1(组长)柯奇豪 过去两天完成了哪些任务 改用更易用的springboot+myb ...

  9. getField

    model.getField(field, num) field {String} 字段名,多个字段用逗号隔开 num {Boolean | Number} 需要的条数 return {Promise ...

  10. EasyUI combobox动态增加选择项

    有需求需要动态的为combobox增加可选项,后来解决方案如下 html如下 <select id="workerList"></select> js 如下 ...