首页 > 其他分享 >有关ODOO的ORM操作

有关ODOO的ORM操作

时间:2023-03-10 12:12:25浏览次数:58  
标签:code car self ORM values ODOO vals 操作 create

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

标签:code,car,self,ORM,values,ODOO,vals,操作,create
From: https://www.cnblogs.com/pushuiyu/p/17202950.html

相关文章

  • PlatformIO 中添加修改 ESP32C3 的分区表解决编译内存不足问题
    ESP32C3有4M的flash,但是在PlatformIO选择esp32-c3-devkitm-1开发板的时候只默认分配了1310720byte,还有很大一部分没有使用。解决方案一:在工程文件夹中建一个.c......
  • 【MDB】Byte Format
    BaudRate:9600NRZSerialBitFormat:1StartBit8DataBits1ModeBit1 StopBit------------------------------------------11BitsTotalLS......
  • np.random.normal 正态分布(Normal distribution)
    正态分布(Normaldistribution),也称“常态分布”,又名高斯分布(Gaussiandistribution),最早由棣莫弗(AbrahamdeMoivre)在求二项分布的渐近公式中得到。C.F.高斯在研究测量误差时......
  • pytorch中GroupNorm的使用(笔记)
    不使用BatchNorm的原因  相比起batchNorm,groupNorm对一个batch的size更不敏感。在现有的研究中,batchNorm在batchsize越大的情况下,效果更佳,batchsize=32的情况明显优于ba......
  • ORM API
    ORMAPI模块模块字段被定义为模块本身的属性,默认情况下,该字段的标签名(即用户可见的名称)是该字段名称的大写版本,但是可以用string参数覆盖。field2=fields.Integer(st......
  • 关于使用webstorm的自定义代码模板
    将需要作为模板的代码复制下来点击“file“→settings”→“Editor”→“LiveTemplates(动态模板)”选择“vue”点击“+”选择“LiveTemplate”将Abbreviation(缩写)中内容改......
  • C# HttpPost 【ContentType:multipart/form-data】表单提交 file 类型数据方法 2
    参考来源:https://blog.csdn.net/qq_39788123/article/details/128495546 try{Dictionary<string,string>headerDict=newDictiona......
  • 操作系统——基本概念
    1操作系统的基本概念1.1操作系统的概念、功能和目标1.1.1操作系统的定义操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源......
  • 【MYSQL】字符串操作函数(拼接、截取、替换、查找位置)
    字符串类型的函数函数用法ASCIl(S)返回字符串S中的第一个字符的ASCII码值CHAR_LENGTH(s)返回字符串s的字符数。作用与CHARACTER_LENGTH(s)相同LENGTH(s)......
  • 操作系统——内存
    3内存3.1内存的基础知识3.1.1逻辑地址和物理地址3.1.2装入的三种方式3.1.3链接的三种方式3.1.4小结3.2内存管理3.3覆盖与交换3.4连续分配管理......