odoo 中 ORM操做

文章轉載自:http://www.javashuo.com/article/p-gctkgcjp-en.htmlhtml

 

一、查詢操做
  sale_id = self.env['sale.order'].search([])
  env將對象實例化,search進行搜索,能夠根據需求添加搜索條件
  search_count([]) 查詢數量
二、建立操做
  values 中放的是res.car中以前建立好的字段,點擊按鈕時會執行orm_test含函數執行自動建立
  @api.multi
  def orm_test(self):
  values = {
  "name": "car",
  "sex":'nan',
  }
  self.env["res.car"].create(values)
三、修改操做
  1.先search查找要修改的內容
    object = self.env["res.car"].search(["name" "=" "car"])
  2.創建修改的字典值
    values = {
    "name": "car1",
    "sex":'nv',
    }
  3.進行修改操做
    object.write(values)
四、瀏覽操做 browse()
  obj = self.env['res.partner'].browse([])
  browse([])的條件爲一個的時候能夠不用放入列表中
  返回的obj是一個字符集,能夠用for遍歷,全部的屬性均可以用 「遍歷值.屬性名」進行瀏覽
  for o in obj:
    print o.name,o.company
五、建立操做,對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>
六、修改操做,重寫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
七、刪除操做,
  示例代碼: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前端

相關文章
相關標籤/搜索