有关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 _ ...
随机推荐
- 小笨自采集在线电脑壁纸 v2.0-支持移动端自适应,支持https
这周闲着没事,翻着网站,记得去年的发表的一篇文章小笨分享一款高清电脑壁纸API,主要是将孟坤壁纸改造支持https,还加了一个搜索功能.以前的壁纸是这样的: 但是,不支持移动端浏览,于是小笨趁着这周周 ...
- Java中的String类真的不可变吗?java面试常见问题
其实在Java中,String类被final修饰,主要是为了保证字符串的不可变性,进而保证了它的安全性.那么final到底是怎么保证字符串安全性的呢?接下来就让我们一起来看看吧. 一. final ...
- java数据类型转换有哪几种?看这篇就够了!
前言 在上一篇文章中,壹哥给大家讲解了Java中的数据类型,从此大家就知道了基本类型和引用类型,尤其是8种基本类型的使用和各自特点.但实际上数据类型的使用还有很多更深入的内容,比如java数据类型直接 ...
- 5分钟带你彻底搞懂async底层实现原理!
ES2017 标准引入了 async 函数,使得异步操作变得更加方便. async 函数是什么?一句话,它就是 Generator 函数的语法糖.研究 async 的原理,就必须先弄清楚 Genera ...
- P6666 [清华集训2016] 数据交互 题解
## P6666 [清华集训2016] 数据交互 题解 ### 简要题意: n个点的树,m次操作,分别为添加一条路径$(u_i,v_i,w_i)$,和撤消一条路径,每一次操作后求出一条路径使得与这条路 ...
- Spring面试题持续更新
这些都是我在微信公众号上看到的一些很有质量的文章,于是乎,自己记录一遍供自己学习 Spring中使用了哪些设计模式 单例模式:Spring中的Bean 模式都是单例的. 工厂模式:工厂模式主要是通过B ...
- 浅谈$\mathcal{LCT}$初步使用及具体操作
\(0x01\) 闲话 · \(LCT\)的用途以及具体思路 \(LCT\)是啥?百度一下的话--貌似是一种检查妇科病的东西?Oier的口味可是真不一般啊 咳,其实在我最近只是浅浅地学了一部分的基础上 ...
- 纯CSS3实现多行文本截断
纯CSS处理多行文本展开和收起,直接上代码和效果图 1 <html> 2 <header> 3 <style> 4 .wrap { 5 position: rela ...
- 配置了一台3700X电脑后
众所周知,电脑是生活中必不可少的玩具,最近搞了一套配置.CPU3700X,显卡RX580,内存32GB.敲,这CPU的框框,看见就爽的不得了. As we all know, a comput ...
- python之pil图像库操作
Image模块Image模块是在Python PIL图像处理中常见的模块,对图像进行基础操作的功能基本都包含于此模块内.如open.save.conver.show-等功能. open类Image.o ...