為了方便各位開發大咖快速找到資料,這裡總結了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...