通過Odoo Shell來操作線上的資料

2021-08-28 23:37:25 字數 2765 閱讀 8472

odoo shell 提供了乙個簡便的操作 odoo的互動介面, 從 odoo 9.0 開始就是標準功能, 無需安裝第三方應用。

odoo shell是 通過在 cli/command.py#commands{} 註冊 shell command 來實現的。

首先,odoo支援的 command 都是基於 command 基類,而 command 基類 則通過 在 它的 元類 初始化的時候, 往 commands{} 註冊支援的 command.

而 shell command.

而從 odoo 10 開始, shell 支援 多種 終端,通過引數shell-inte***ce 傳遞給odoo shell,支援以下終端型別

ipython

ptpython

bpython

python,如果不指定,則使用python

執行 odoo shell

執行 命令 python odoo-bin shell -c ..\t.conf --shell-inte***ce ipython

以 ipython 互動介面 執行 odoo shell. 啟動之後

出現 ipython 終端提示符

odoo shell啟動之後,只提供了 以下幾個變數

變數型別

envodoo.api.environment 物件

odoo

odoo 模組

openerp

odoo 模組

self

res.users(1,) 記錄

registry 是 odoo例項維護的資訊中心,可以通過 env.registry 獲取

通過 env.registry.models 可以 獲取當前 odoo例項 的模型列表, 它返回的結果是,modelclass 和 model 字典鍵值對,例如

檢視下 常用的 模型,例如 product.product

product.product 是 modelclass ; 而 odoo.api.product.product 則是 model

也可以通過 env['product.product'] 獲取 model

而這個 model 本身就是 odoo.api.product.product

再開看看 odoo.api.product.product 的基類

從登錄檔 獲取 odoo.api.product.product 對應的 model class, 發現 product.product 是在所有 定義/擴充套件過 product.product 模型的 模型基礎上 再組裝出來的。

odoo shell 操作 odoo 記錄

查詢產品

遍歷檢視產品的名稱

修改產品的屬性

例如修改 id = 1 產品的名稱

只要能取得模型,模型的一切方法都能呼叫, 標準的方法

方法必要引數

選參search

domain

search_count

domain

search_read

domain

browse

copy

copy_data

create

default_get

name_get

read

read_group

unlink

write

update

vals 字典 提示

odoo 的模型其實是 轉包過一次的,並不是 product.product,而是 odoo.api.product.product 而且 model 是 通過 model class 來進行例項化出來的。

嚴格意義上來講,在寫odoo 模型model 時,其實是在 寫 model class 的父類, 最終這些 父類會 彙總 派生出 model class,進而例項化為 model,而recordset 也是 model class 衍生出來的

在Sqlite中通過Replace來實現插入和更新

你可能在批量處理乙個事務的時候,想要批量插入一系列的資料,但是這些資料當新增完一次之後,重新新增的時候,你不想要重新新增,只是想將原有的資料進行更新,例如 我想要通過excel將一系列的圖書匯入到資料庫中,而這些圖書在你下一次編輯之後,重新匯入,只是對原有的資料進行修改。以上是乙個業務的場景。在ms...

在Sqlite中通過Replace來實現插入和更新

你可能在批量處理乙個事務的時候,想要批量插入一系列的資料,但是這些資料當新增完一次之後,重新新增的時候,你不想要重新新增,只是想將原有的資料進行更新,例如 我想要通過excel將一系列的圖書匯入到資料庫中,而這些圖書在你下一次編輯之後,重新匯入,只是對原有的資料進行修改。以上是乙個業務的場景。在ms...

jquery通過mouseover來模擬click

今天偶然遇到乙個問題,想通過乙個mouseover操作來模擬click的效果。其實這件事情對於jquery來說並不是乙個難的處理。只是有段時間沒有玩jquery,一些方法快忘掉了 簡單記錄一下吧,方便自己以後溫故。這裡主要採用.hover 方法來實現。code如下 btw,將jquery中.hove...