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 点击进入
随机推荐
- 运行Hadoop start-all.sh遇到的错误ssh: connect to host localhost port 22: Connection refused
ssh: connect to host localhost port 22: Connection refused 我的情况是ssh server没装,查看方法: ps -e |grep ssh 1 ...
- Android 65536方法数限制的思考
前言 没想到,65536真的很小. 1 Unable to execute dex: method ID not in [0, 0xffff]: 65536 PS:本文只是纯探索一下这个65K的来源, ...
- spring Mybatis集成
pom文件 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http:/ ...
- XJOI 3605 考完吃糖(DAG图dfs)
题目描述: 期末考试考完了,分数也出来了,大家准备吃糖庆祝一下,为了鼓励同学们下学期能取得更好的成绩,司马红豆同学让n个同学站成一排,如果某个同学的分数比相邻的一个同学要高,那么他得到的糖果就会比这个 ...
- 第几天——第九届蓝桥杯C语言B组(省赛)第一题
原创 标题:第几天 2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余内容. 这题是送分题,只需要注意一下2000年 ...
- redis整理の配置
redis有一个很强大也很重要的配置文件redis.conf.此文件可以随服务启动,为服务配置各种不同场景所需的参数: daemonize: 默认情况下,redis 不是在后台运行的,如果需要在后台运 ...
- php 与java安卓客户端的查询交互
PHP 服务器端: function getids() { $this->output->set_header('Content-Type: application/json; chars ...
- [LeetCode 题解]: Count and Say
The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...
- 在 LINQ to Entities 查询中无法构造实体或复杂类型“Mvc_MusicShop_diy.Models.Order”
错误代码: var orders = db.Orders.Where(o => o.UserId == userid).Select(c => new Order { OrderI ...
- [raspberry p3] [suse] 安装maven
[raspberry p3] [suse] 安装maven 配置package repositroy, 添加devel:tools:building vim /etc/zypp/repos.d/ope ...