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操作的更多相关文章

  1. Python/Django(CBV/FBV/ORM操作)

    Python/Django(CBV/FBV/ORM操作) CBV:url对应的类(模式) ##====================================CBV操作============ ...

  2. python/ORM操作详解

    一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...

  3. Django中ORM操作

    ORM操作: class UserInfo(models.Model): username = models.CharField(max_length=32) password = models.Ch ...

  4. Django的ORM操作

    ORM操作 select * from tb where id > 1 # 对应关系 models.tb.objects.filter(id__gt=1) models.tb.objects.f ...

  5. python 外键用法 多对多关系 ORM操作 模板相关

    一.app/models中写类(设计表结构) 1.普通类 class  A(models.Model): id=modles.AutoField(primary_key=True) name=mode ...

  6. Django之ORM操作

    Django之ORM操作 前言 Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计 ...

  7. Django之ORM操作(聚合 分组、F Q)

    Django之ORM操作(聚合 分组.F Q) 聚合 aggregate()是QuerySet的一个终止子句,也就是说,他返回一个包含一些键值对的字典,在它的后面不可以再进行点(.)操作.   键的名 ...

  8. python第一百零五天 ---Django 基础 路由系统 URL 模板语言 ORM 操作

    一 路由系统 URL 1 url(r'^index/',views.index) url(r'^home/', views.Home.as_view()) 2 url(r'^detail-(\d+). ...

  9. Django ORM 操作 必知必会13条 单表查询

    ORM 操作 必知必会13条 import os # if __name__ == '__main__': # 当前文件下执行 os.environ.setdefault('DJANGO_SETTIN ...

  10. 在pycharm中进行ORM操作

    打开manage.py, 复制 import..... if.......os.....  导入django,开启django, 导入app中的models  orm操作 import os if _ ...

随机推荐

  1. Linux & 标准C语言学习 <DAY8_2>

    一.函数 Function     一段具有某一项功能的代码集合,是C语言管理代码的最小单位     把代码封装成一个个函数,方便管理和调用函数     1.函数分类         标准库函数:   ...

  2. 基于 Agora SDK 实现 Windows 端的多人视频互动(基于3.6.2版本)

    本文介绍如何通过 Agora SDK 在 Windows 平台快速实现互动直播.互动直播和实时通话的区别就在于,直播频道的用户有角色之分.你可以将角色设置为主播或者观众,其中主播可以收.发流,观众只能 ...

  3. Asp-Net-Core开发笔记:使用RateLimit中间件实现接口限流

    前言 最近一直在忙(2月份沉迷steam,3月开始工作各种忙),好久没更新博客了,不过也积累了一些,忙里偷闲记录一下. 这个需求是这样的,我之前做了个工单系统,现在要对登录.注册.发起工单这些功能做限 ...

  4. 前端转向PHP进阶之路

    一.PHP简介 Hypertext Preprocessor,又称为超文本预处理器(HTML为超文本标签语言),就是我们所说的PHP.它是一种糅杂百家的后台语言,在PHP中,可以见到C.Java等语言 ...

  5. SpringBoot——入门及原理

    SpringBoot 用来简化 Spring应用开发,约定大于配置,去繁从简,是由 Pivotal团队提供的全新框架.其设计目的是用来简化新 Spring应用的初始搭建以及开发过程.该框架使用了特定的 ...

  6. Maven常用依赖包简单

    Maven官方仓库:Maven Repository: junit » junit (mvnrepository.com) Mysql 1 <!--Mysql--> 2 <depen ...

  7. sqlmap的基本使用

    sqlmap的基本使用 一.注入 1.查询是否存在注入点 sqlmap -u "http://www.xx.com?id=x" --dbs 检测有哪些数据库 --current-d ...

  8. 浅谈$\mathcal{LCT}$初步使用及具体操作

    \(0x01\) 闲话 · \(LCT\)的用途以及具体思路 \(LCT\)是啥?百度一下的话--貌似是一种检查妇科病的东西?Oier的口味可是真不一般啊 咳,其实在我最近只是浅浅地学了一部分的基础上 ...

  9. 基于Admin.NET框架的前端的一些改进和代码生成处理(2)

    在上篇随笔<基于Admin.NET框架的前端的一些改进和代码生成处理(1)>中大致介绍了一些关于对Admin.NET框架的前端的改造工作,主要目的就是希望能够增加前端代码的简洁性和可读性, ...

  10. AllenBradley罗克韦尔CIP通信协议介绍 C# AllenBradley(CIP)读写操作PLC数据 C#罗克韦尔(CIP)PLC通信 全开源下载

    罗克韦尔CIP通信协议(Control and Information Protocol)是一种面向对象的通信协议,它是用于工业自动化领域的数据通信协议.CIP协议可以在不同厂商.不同类型的自动化设备 ...