1. 程式人生 > >Odoo12 ORM API ☞ Common ORM methods

Odoo12 ORM API ☞ Common ORM methods

Common ORM methods

search()
 根據search domain,返回匹配記錄的記錄集。可以返回匹配記錄的子集(offsetlimit 引數)並進行排序(order 引數):

>>> # searches the current model
>>> self.search([('is_company', '=', True), ('customer', '=', True)])
res.partner(7, 18, 12, 14, 17, 19, 8, 31, 26, 16, 13, 20, 30, 22, 29, 15, 23, 28, 74)
>>> self.search([('is_company', '=', True)], limit=1).name
'Agrolait'

要檢查是否有任何記錄與域匹配,或者計算記錄的數量
請使用 search_count()

create()
  根據欄位值的字典或儲存字典的列表,返回所建立的記錄集:

>>> self.create({'name': "Joe"})
res.partner(78)
>>> self.create([{'name': "Jack"}, {'name': "William"}, {'name': "Averell"}])
res.partner(79, 80, 81)

write()
  將欄位值寫入其記錄集中的所有記錄。不返回任何結果。

self.write({'name': "Newer Name"})

browse()
  根據id或者ids在資料庫中查詢並返回一個記錄集,當從外部Odoo獲取記錄ID時(例如,通過外部系統往返)或在舊API中呼叫方法時有用:

>>> self.browse([7, 18, 12])
res.partner(7, 18, 12)

exists()
  返回僅包含資料庫中存在的記錄的新記錄集。可用於檢查記錄(例如從外部獲得)是否仍然存在:

if not record.exists():
    raise Exception("The record has been deleted")

  或者在呼叫可能刪除了一些記錄的方法之後:

records.may_remove_some()
# 只保留未刪除的記錄
records = records.exists()

ref()
  環境方法返回與提供的外部id匹配的記錄:

>>> env.ref('base.group_public')
res.groups(2)

ensure_one()
  檢查記錄集是否為單例(僅包含單個記錄),否則會引發錯誤:

records.ensure_one() 
# 相當於但更清晰:
assert len(records) == 1, "Expected singleton"