有关ODOO的ORM操作
1、查询操作
sale_id = self.env['sale.order'].search([])
env将对象实例化,search进行搜索,可以根据需求添加搜索条件
search_count([]) 查询数量
2、创建操作
values 中放的是res.car中之前创建好的字段,点击按钮时会执行orm_test含函数执行自动创建
@api.multi
def orm_test(self):
values = {
"name": "car",
"sex":'nan',
}
self.env["res.car"].create(values)
3、修改操作
1.先search查找要修改的内容
object = self.env["res.car"].search([("name" , "=" , "car")])
2.建立修改的字典值
values = {
"name": "car1",
"sex":'nv',
}
3.进行修改操作
object.write(values)
4、浏览操作 browse()
obj = self.env['res.partner'].browse([])
browse([])的条件为一个的时候可以不用放入列表中
返回的obj是一个字符集,可以用for遍历,所有的属性都可以用 “遍历值.属性名”进行浏览
for o in obj:
print o.name,o.company
5、创建操作,对create函数的重写,
前端订单点击保存之后会自动执行create内容,如果我们需要对点击之后进行相应的其他数据的同步刷新操作要对create进行重写操作
可以用于实现自动订单编号的生成,
@api.model
def create(self, vals):
vals['list_price'] = 100
print vals
注:vals中包含了前端订单中的说有字段信息及值,可以用vals['list_price'] = 100的方式进行修改
自动生成订单编号
1.定义code字段
2.在create函数中判断code字段的初始值,并修改vals["code"]的值
@api.model
def create(self, vals):
if vals.get("code", "new") == "new":
vals["code"] = self.env["ir.sequence"].next_by_code(self._name) or "new"
result = super(Res.Car, self).create(vals)
return result
3.创建一个squence.xml文件
<record id='seq_res_car' model="ir.sequence">
<field name=""></field>
<field name="code">res.car</field>
<field name="prefix">C%(year)s%(month)s%(day)s</field>
<field name="padding">5</field>
<field name="auto_reset">True</field>
<field name="company+id" eval="False"></field>
</record>
6、修改操作,重写write函数
只触发被修改的控件,只有有控件陪修改的时候,才会触发write函数执行
示例代码,判断values中是否有qty 键,在进行相应的操作
@api.multi
def write(self, values):
if valuees.has_key("qty"):
if values["qty"] == 100:
values["list_price"] = 10
result = super(Res.Car, self).write(vals)
return result
7、删除操作,
示例代码:self值得是当前所在的类,可以获取当前页面的所有的对象
@api.multi
def unlink(self):
for order in self:
if order.state != "draft":
raise UserError(u"只能删除草稿状态")
result = super(Res.Car, self).unlink()
return result
有关ODOO的ORM操作的更多相关文章
- Python/Django(CBV/FBV/ORM操作)
Python/Django(CBV/FBV/ORM操作) CBV:url对应的类(模式) ##====================================CBV操作============ ...
- python/ORM操作详解
一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...
- Django中ORM操作
ORM操作: class UserInfo(models.Model): username = models.CharField(max_length=32) password = models.Ch ...
- Django的ORM操作
ORM操作 select * from tb where id > 1 # 对应关系 models.tb.objects.filter(id__gt=1) models.tb.objects.f ...
- python 外键用法 多对多关系 ORM操作 模板相关
一.app/models中写类(设计表结构) 1.普通类 class A(models.Model): id=modles.AutoField(primary_key=True) name=mode ...
- Django之ORM操作
Django之ORM操作 前言 Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计 ...
- Django之ORM操作(聚合 分组、F Q)
Django之ORM操作(聚合 分组.F Q) 聚合 aggregate()是QuerySet的一个终止子句,也就是说,他返回一个包含一些键值对的字典,在它的后面不可以再进行点(.)操作. 键的名 ...
- python第一百零五天 ---Django 基础 路由系统 URL 模板语言 ORM 操作
一 路由系统 URL 1 url(r'^index/',views.index) url(r'^home/', views.Home.as_view()) 2 url(r'^detail-(\d+). ...
- Django ORM 操作 必知必会13条 单表查询
ORM 操作 必知必会13条 import os # if __name__ == '__main__': # 当前文件下执行 os.environ.setdefault('DJANGO_SETTIN ...
- 在pycharm中进行ORM操作
打开manage.py, 复制 import..... if.......os..... 导入django,开启django, 导入app中的models orm操作 import os if _ ...
随机推荐
- Python自动化环境搭建轻轻松松---selenium
其实安装selenium实现自动化搭建环境也不拿 一共四步 1.Python开发环境 2.安装selenium包 3.安装浏览器 4.安装你安装的浏览器驱动 一: 想要实现Python环境不可能缺席: ...
- 【读书笔记】组合计数中的行列式方法 专题2 欧拉回路,the BEST theorem
目录 专题2-欧拉回路,the BEST theorem 一些定义 一个有向图是欧拉的充要条件 BEST定理 BSET定理推论 k-ary de Bruijn sequence定义 BSET theo ...
- ByteHouse:基于 ClickHouse 的实时计算能力升级
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 ByteHouse 是火山引擎数智平台旗下云原生数据分析平台,为用户带来极速分析体验,能够支撑实时数据分析和海量离 ...
- 详解uniapp和vue在路由方面的不同和联系
Uniapp 和 Vue 在路由方面有相似之处,因为 Uniapp 是基于 Vue 的.Uniapp 的路由系统是通过 Vue Router 实现的,因此两者有许多相同的概念和 API. 相同点: 都 ...
- 【LeetCode动态规划#04】不同的二叉搜索树(找规律,有点像智力题)
不同的二叉搜索树 力扣题目链接(opens new window) 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 思路 题意分析 先找一下关系 当n = 1时,如果 ...
- dart基础---->dart语法入门
Dart is an open source, structured programming language for creating complex, browser-based web appl ...
- [原创][luogu]P1217 回文质数 真·生成回文的方法
不多说,直接看代码,都在注释里 // 中心思想: // * 1. 代入数据只想回文的一半和位数的变化 // * 例. 1001 和 101 都存的是10, 但是位数一个是4, 一个是3 // * 2. ...
- 【性能优化】优雅地优化慢查询:缓存+SQL修改组合拳
问题描述 单例数据库模式中,后端高并发请求多(读多写少),导致数据库压力过大,关键接口响应变慢,严重影响体验. 需求 减少接口的响应时间. 寻找解决方案 由于问题主要处在数据库压力过大的情况,采用两种 ...
- MYSQL5.7.30安装
1.下载MySQL 我用的是5.7.30(安装版) 我选择的下载链接:https://dev.mysql.com/downloads/windows/installer/5.7.html 官网链接:h ...
- 四月十九号java基础知识
1.总括:类的继承是使用已有的类为基础派生出新的类.通过类继承的方式,便能开发出新的类,而不需要编写相同的程序代码,所以说类的继承是程序代码再利用的概念抽象与接口都是类概念的扩展.通过继承扩展出的子类 ...