有关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 _ ...
随机推荐
- Agora 教程丨一个典型案例,教你如何使用水晶球“数据洞察”
7 月初,声网Agora 水晶球的"数据洞察"功能正式版上线."数据洞察"可显示两种数据,一种是用量,另一种是质量. "数据洞察"的&quo ...
- [Elixir/Erlang/Racket] 模式匹配,字符串,哈希表,格式化输出
https://leetcode.cn/problems/evaluate-the-bracket-pairs-of-a-string/solutions/2057593/s-by-yhm138_-n ...
- Eclipse安装和配置环境教程(图文详解)
前言 在上一篇文章中,壹哥给大家介绍了Notepad++这个更高级点的记事本,它进行Java开发相比windows自带的记事本要更方便一些.但是即便如此,用这种记事本进行Java开发效率依然很低.如果 ...
- Redis - 基础数据类型
简介 根据 官网文档 的解释,可以了解 Redis 基础数据类型的一些基本信息: 对于 Redis 来说,存储的 key 值都是字符串类型,讨论数据类型的时候,指的都是存储的 value 值.这里主要 ...
- MyBatisPlus 整合 SpringBoot 遇见的问题(一)
[异常]:UnsatisfiedDependencyException: Error creating bean with name 'xxx[类]': Unsatisfied dependency ...
- Kafka 实现延迟队列、死信队列、重试队列
更多内容,访问 IT-BLOG Kafka中实现延迟队列 在发送延时消息的时候并不是先投递到要发送的真实主题(real_topic)中,而是先投递到一些 Kafka 内部的主题(delay_topic ...
- 万字长文带你入门docker
1 Docker dockerfiler 镜像构建 Compose是在单机进行容器编排 Horbor 镜像仓库 Docker swarm 在多机进行容器编排 Docker Compose缺点是不能在分 ...
- 【AIGC未来的发展方向】面向人工智能的第一步,一文告诉你人工智能是什么以及未来的方向分析
人工智能的概念 当人们提到"人工智能(AI)"时,很多人会想到机器人和未来世界的科幻场景,但AI的应用远远不止于此.现在,AI已经广泛应用于各种行业和生活领域,为我们带来了无限可能 ...
- 2.@Param()注解
前言 在咋们的mapper层中,@Param()注解是很常见的,它是专门服务于SQL相关联的mapper接口,它有两个功能:1)多参数传值,2)取别名,替换传值 1.取别名,替换传值 1.1 代码演示 ...
- 三天吃透Redis八股文
Redis连环40问,绝对够全! Redis是什么? Redis(Remote Dictionary Server)是一个使用 C 语言编写的,高性能非关系型的键值对数据库.与传统数据库不同的是,Re ...