ODOO 開發備忘錄(一)

2021-09-19 19:54:39 字數 4569 閱讀 9964

為了方便各位開發大咖快速找到資料,這裡總結了odoo開發中的一些基礎資訊,還望大家提出意見。

預定義的屬性

_name (required)
業務模型名稱, 請使用帶點的語法標識 (在 模型的命名空間中)

_columns (required)
字典

_defaults
字典:

_defaults['name'] = lambda self,cr,uid,context: 'eggs'

_auto
如果為 true (default) orm會自動建立資料庫表:設定為false後, 您可以通過 init() 方法來建立您的表/檢視;

_inherit
父級業務邏輯 _name,用於定義繼承;

_inherits
用於高階繼承: 通過字典對映父級業務邏輯的 _name到相關欄位的外部鍵值

_constraints
通過元組的列表定義 python 約束, 使用如下形式

(func_name, message, fields)

_sql_constraints
通過一系列元組列表定義 sql 約束, 使用以下形式

(name, sql_def, message)

_log_access
如果為 true (default), 以下 4 個字段 (create_uid, create_date, write_uid,

write_date) 會自動在記錄級別的操作中被自動記錄於日誌中, 並可以通過 perm_read() 方法來讀取

_order
用於為列表中記錄進行排序的欄位名稱(預設: 'id')

_rec_name
用作名稱的可選字段, 通常被 name_get() 方法使用 (預設:

'name')

_sql
sql **,用於為模型建立表/檢視 (當 _auto 為

false) – 可以被init() 方法中的sql執行所替代

_table
需要使用的sql表 (預設: _name 使用 '.' 替代下劃線 '_')

• string: 字段標識 (必填)

• required:true,則為強制填寫

• readonly: true,則無法編輯

• help: 幫助工具提示

• select: true,建立乙個此列的資料庫索引

• context: 上下文詞典引數 (對於關係字段)

• change_default: true ,則字段應該用於客戶端中預設值的條件

• states: 根據狀態,動態更改基於狀態的公共屬性

boolean(...) integer(...) date(...)datetime(...) time(...)
'active': fields.boolean('active'),

'priority': fields.integer('priority'),

'start_date': fields.date('start date'),

char(string,size,translate=false,..)

text(string, translate=false, …)

文字類欄位

• translate: true,則值可以被使用者翻譯, 僅對 char/text 字段

• size: 選填的char欄位最大大小

float(string, digits=none, ...)
十進位制值

• digits: 元組 (精度, 比例)

selection(values, string, ...)
此欄位允許在一系列已定義的值中進行選擇

• values: 值的列表 (鍵值標記的元組) 或者

乙個返回此類列表的元組

binary(string, filters=none, ...)
用於儲存檔案或二進位制檔案的字段.

• filters: 可選檔名篩選器

'picture': fields.binary('picture',

filters='.png,.gif')

reference(string, selection, size,..)
具有動態關係到其他物件的字段,和乙個widget配對

• selection: model 被允許物件型別及對應標籤的 _name(與選擇欄位的值相同格式) (必填)

• size: 用於儲存文字列的大小

(storage format is 'model_name,object_id')

'contact': fields.reference('contact',[

('res.partner','partner'),

('res.partner.contact','contact')])

domain:可選的過濾器形式搜尋引數 ( search())

many2one(obj, ondelete='set null', …)
與父母物件的關係 (使用外鍵值)

• obj: 目標物件的 _name (required)

• ondelete: 刪除處理, e.g. '設為 null',

'cascade', 參見 postgresql 文件

one2many(obj, field_id, …)
多個物件的虛擬關係(many2one的反向)

• obj: 目標物件的 _name (required)

• field_id: 逆欄位名 many2one, i.e.

相應外來鍵 (required)

many2many(obj, rel, field1, field2, …)
模型間的雙向多重

• obj: 目標物件的_name (required)

• rel: 使用的關係表的可選名稱(預設: 自動指定的基於模型名稱)

• field1:當前物件的id (default: based on model)

• field2: 目標物件的id (default: based on model)

function(fnct, arg=none, fnct_inv=none, fnct_inv_arg=none, type='float',

fnct_search=none, obj=none, store=false, multi=false,…)

模擬真實欄位的函式字段, 計算出值而非儲存

• fnct: 計算字段值的函式 (required)

def fnct(self, cr, uid, ids, field_name, arg, context)

returns a dictionary

• fnct_inv: 用於在字段中寫入值的函式而非

def fnct_inv(obj, cr, uid, id, name, value, fnct_inv_arg, context)

• type: 模擬欄位的型別 (可以是除 'function'以外的任何)

• fnct_search:用於在此字段上搜尋的函式

def fnct_search(obj, cr, uid, obj, name, args)

返回元組引數列表 search(), e.g. [('id','in',[1,3,5])]

• obj: 模擬欄位的 _name

• store, multi: 優化機制

related(f1, f2, …, type='float', …)
與瀏覽鏈結字段等效的快捷字段

• f1,f2,...: 鏈結欄位以到達目標 (f1 required) (→51)

• type: 目標欄位的類

property(obj, type='float', view_load=none, group_name=none, …)
具有特定訪問許可權的動態屬性

• obj: object (required)

• type: 型別

• one2many ↔ many2one 

• many2many ↔ many2many

• one2many ↔ many2one + many2one ↔ one2many = many2many

謝謝!

歡迎提出意見!

ODOO 開發備忘錄(一)

為了方便各位開發大咖快速找到資料,這裡總結了odoo開發中的一些基礎資訊,還望大家提出意見。預定義的屬性 name required 業務模型名稱,請使用帶點的語法標識 在 模型的命名空間中 columns required 字典 defaults字典 defaults name lambda se...

PCI開發備忘錄

1.基於fpga的pci匯流排影象採集卡的設計與實現 範赫南 1 配置了主模式單週期發數 l pcicr 2 0 111b,設定pci9054工作方式為主模式。2 dmpbam 1b,設定本地端處理器訪問pci匯流排為儲存器方式或io方式。3 dmrr fff0000oh,設定本地端處理器定址空間是...

C RDLC開發備忘錄

1.pageheader區域不能放table list控制項,如果需要顯示動態資訊,那麼可以通過引用body中的控制項值來顯示,但是注意,body控制項只能在某一頁顯示,翻到其他頁碼時,控制項值會為空。3.table控制項的filter表示式很奇怪,如果dataset表中的字段屬性為int,filt...