odoo10学习笔记九:Odoo10 API
转载请转载原文地址:https://www.cnblogs.com/ygj0930/p/11189315.html
一:纪录集API
model中的数据是以集合的形式使用的,因此可以使用集合运算来操作。
集合运算符
- record in set返回record是否在set中,record须为单条记录,record not in set反之
- set1 <= set2 返回set1是否为set2的子集
- set1 >= set2 返回set2是否为set1的子集
- set1 | set2 返回set1和set2的并集
- set1 & set2 返回set1和set2的交集
- set1 - set2 返回在集合set1中但不在set2中的记录
集合运算API:
- ids 得到当前记录集合的id列表
- ensure_one() 验证一个记录集合是否只包含一条记录
- exists() 返回当前记录集中真正存在的子集,并把缓存中未删除的部分做标记,可用于判断
if record.exists():
- filtered(func) 返回满足func参数内条件的记录集合,参数可以是一个函数或者用.分隔的字段列表
- sorted(key=None, reverse=False) 返回按key排序之后的记录集,key参数可以是一个返回单个key的函数或字段名称或为空,reverse参数为True时即为倒序
- mapped(func) 将func函数应用到所有记录上,并返回记录列表或集合
二:运行环境API
运行环境保存了很多ORM相关的变量:数据库查询游标、当前用户、元数据,还存有缓存,可使用env
来访问,如:
records.env.user
records.env.cr
records.env.context
更改运行环境:
- sudo() 使用现有数据集创建一个新运行环境,得到一个基于新运行环境的数据集的拷贝
env['res.partner'].sudo().create({'name': "A Partner"})
- with_context()
一个参数时可用于替换当前运行环境的context,多个参数时通过keyword添加到当前运行环境context或单参数时设置的context - with_env() 完整替换当前运行环境
三:ORM API
search() 接收domain表达式参数,返回符合条件的数据集合,可以通过limit,offset参数返回一个子集,还可通过order参数对数据排序。
self.search([('is_company', '=', True), ('customer', '=', True)])
search_count():统计满足条件的数据数量
create() 接收多个字段、值的组合,返回新创建的数据集:
self.create({'name': "New Name"})
write() 接收多个字段、值组合,会对指定数据集的所有记录进行修改,不返回:
self.write({'name': "Newer Name"})
browse() 根据数据的id或者一组id来查找,返回符合条件的数据集合:
self.browse([7, 18, 12])
exists() 得到某个数据集中保留在数据库中的那部分(可用于检查数据集是否为空):
if not record.exists():
raise Exception("The record has been deleted")
ref() 运行环境函数,根据提供的外部id返回对应的数据记录:
env.ref('base.group_public')
ensure_one() 检验某数据集是否只包含单条数据,如果不是则报错:
records.ensure_one()
四:搜索函数
search(args[, offset=0][, limit=None][, order=None][, count=False])
根据args参数里的domain表达式来搜索所有记录,参数列表:
1.args:domain表达式,为空时返回所有记录
2.offset (int) 从第几条记录开始取
3.limit (int) 返回记录行数的最大值
4.order (str) 排序的字段
5.count (bool) 当值为True的时候只返回匹配记录的条数search_count(args)
返回根据给定domain表达式参数查询所得到的记录条数name_search(name='', args=, operator='', limit=)
返回根据name条件来查询,并满足args指定的domain表达式的记录集合name (str) -- 用来匹配的name字符串
args (list) -- domain表达式列表
operator (str) -- 用来匹配的操作符,如: 'like' , '='.
limit (int) -- 可选参数,最多返回的记录行数
五:字段或视图查询
字段查询:
fields_get([fields][, attributes])
以数据字典的形式返回字段的定义,通过继承得来的字段也会在其中,string/help/selection属性会自动被翻译
fields参数是字段列表、为空或不传返回所有字段
attributes 可指定字段的属性、为空或不传时返回全部的
视图查询:
fields_view_get([view_id | view_type=''])
返回指定视图的具体组成如:字段,模型,视图结构
参数列表:
view_id 视图的id或None
view_type 当view_id参数为空时指定视图类型如form,tree等
toolbar 参数为true时将上下文动作包含在内
default_get(fields) 获取指定字段的默认值
name_get() 以列表形式返回每条记录的描述,默认是display_name字段
name_create(name) 相当于调用create方法创建一条新记录而只设置一个display_name
odoo10学习笔记九:Odoo10 API的更多相关文章
- go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin)
目录 go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin) zipkin使用demo 数据持久化 go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin ...
- 多线程学习笔记九之ThreadLocal
目录 多线程学习笔记九之ThreadLocal 简介 类结构 源码分析 ThreadLocalMap set(T value) get() remove() 为什么ThreadLocalMap的键是W ...
- golang学习笔记10 beego api 用jwt验证auth2 token 获取解码信息
golang学习笔记10 beego api 用jwt验证auth2 token 获取解码信息 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放 ...
- MDX导航结构层次:《Microsoft SQL Server 2008 MDX Step by Step》学习笔记九
<Microsoft SQL Server 2008 MDX Step by Step>学习笔记九:导航结构层次 SQL Server 2008中SQL应用系列及BI笔记系列--目录索 ...
- python3.4学习笔记(九) Python GUI桌面应用开发工具选择
python3.4学习笔记(九) Python GUI桌面应用开发工具选择 Python GUI开发工具选择 - WEB开发者http://www.admin10000.com/document/96 ...
- Go语言学习笔记九: 指针
Go语言学习笔记九: 指针 指针的概念是当时学C语言时了解的.Go语言的指针感觉与C语言的没啥不同. 指针定义与使用 指针变量是保存内存地址的变量.其他变量保存的是数值,而指针变量保存的是内存地址.这 ...
- ZooKeeper学习笔记二:API基本使用
Grey ZooKeeper学习笔记二:API基本使用 准备工作 搭建一个zk集群,参考ZooKeeper学习笔记一:集群搭建. 确保项目可以访问集群的每个节点 新建一个基于jdk1.8的maven项 ...
- Python学习笔记九
Python学习笔记之九 为什么要有操作系统 管理硬件,提供接口. 管理调度进程,并且将多个进程对硬件的竞争变得有序. 操作系统发展史 第一代计算机:真空管和穿孔卡片 没有操作系统,所有的程序设计直接 ...
- Flink学习笔记:Flink API 通用基本概念
本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...
随机推荐
- minimize.m:共轭梯度法更新BP算法权值
minimize.m:共轭梯度法更新BP算法权值 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ Carl Edward Rasmussen在高斯机器学 ...
- Ambari 大数据集群管理
最近做了一个大数据项目,研究了下集群的搭建,现在将集群搭建整理的资料与大家分享一下!如有疑问可在评论区回复. 1前置配置 Centos7系统,每台系统都有java运行环境 全程使用root用户,避免安 ...
- 借助meta影藏顶部菜单
1===>报错 Cannot find module 'webpack/lib/Chunk' 删除node_modules 然后重新下载 4==> 现在已进入页面,底部就有四个菜单,在点击 ...
- vue2.0教手架安装
- Vuex简介
一. 什么是Vuex? Vuex Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规则保证状态以一种可预测的方式发生变化. Vue ...
- drf扩展知识点总结视图
- VLAN实验(5)三层交换
1.选择1台S5700和3台pc机,并根据实验编址完成此拓扑图. 2.检查连通性 (1)因为mengyu-PC1和mengyu-PC2在一个地址段上,可以ping通 (2)因为mengyu-PC1和m ...
- adb的端口号5037被占用的解决方法
1.在cmd中执行adb nodaemon server,查看adb的端口号是多少,一般情况下是5037(why?应该软件使用的端口号是固定的) 2.再执行netstat -ano | findstr ...
- 解决Python开发中,Pycharm中无法使用中文输入法问题
Pycharm是开发Python程序的利器,但有时会遇到无法输入中文的情况.表现为:在Ubuntu系统可以正常输入中文,却在Pycharm内写注释的时候,切换不出中文.下面演示如何解决此问题. 1.在 ...
- springboot中Thymeleaf和Freemarker模板引擎的区别
前言这两个都是属于模板引擎,但是各有各的好处,enn,在市面上比较多的也就是jsp.freemarker.velocity.thymeleaf等页面方案.Thymeleaf和Freemarker的区别 ...