有关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 _ ...
随机推荐
- Why WebRTC丨前世今生
前言 近几年实时音视频通信应用呈现出了大爆发的趋势.在这些实时通信技术的背后,有一项不得不提的技术--WebRTC. 今年 1 月,WebRTC 被 W3C 和 IETF 发布为正式标准.据调研机构 ...
- HTTP 返回状态码403,404,502等不同报错原因及解决思路
要学会看日志rpm的默认路径 /var/log/nginx/源码的默认路径 安装路径/logs/ 排错思路: 1)服务器启动失败,直接"nginx -t"测试语法 看配置文件是 ...
- 【RSocket】使用 RSocket(三)——服务端主动调用客户端方法
1. 编写客户端接收请求的逻辑 我们可以在初始化 Rsocket 实例的时候指定客户端可以被调用的方法,使用 acceptor() 指定可被调用的方法和方法使用的通信模型类型: 通信类型为 Reque ...
- IDEA配置JDK版本的地方, 适用于Compilation failed: internal java compiler error
错误原因: 1. 编译版本不匹配 2.当前项目jdk版本不支持 解决方法 查看项目的jdk 查看工程的jdk 查看java编译器版本 讲这些改成自己需要的版本, 一般就可以解决编译版本出现的错误
- deepin安装retropie
deepin安装retropie,并解决游戏列表中文乱码已经retroarch中文乱码. 安装retropie模拟器 sudo apt install -y git dialog unzip xmls ...
- urllib.request发送get请求
发送请求 urllib.request库 模拟浏览器发起一个HTTP请求,并获取请求响应结果 urllib.request.urlopen的语法格式 urllib(url.data = None,[t ...
- Install Ansible on CentOS 8
环境准备: 1.至少俩台linux主机,一台是控制节点,一台是受控节点 2.控制节点和受控节点都需要安装Python36 3.控制节点需要安装ansible 4.控制节点需要获得受控节点的普通用户或r ...
- Sevlet规范:HttpServlet类 和 HttpServletRequest接口 源码解析
Sevlet规范:HttpServlet类 和 HttpServletRequest接口 源码解析 每博一文案 命运总是不如人愿,但往往是在无数的痛苦总,在重重的矛盾和艰辛中,才是人成熟起来. 你,为 ...
- 随机服务系统模拟—R实现(三)
M/M/c随机服务系统的模拟 M/M/1服务系统:(1)队列长度没有限制:(2)顾客到达的时间间隔和服务时间均服从指数分布:(3)服务台数量为c. 一.M/M/c随机服务系统的模拟 在M/M/c排队系 ...
- pandas之样本操作
随机抽样,是统计学中常用的一种方法,它可以帮助我们从大量的数据中快速地构建出一组数据分析模型.在 Pandas 中,如果想要对数据集进行随机抽样,需要使用 sample() 函数.sample() 函 ...