ODOO 開發備忘錄(一)

你們好,git

爲了方便各位開發大咖快速找到資料,這裏總結了odoo開發中的一些基礎信息,還望你們提出意見。sql

對象關係映射服務 – ORM

**預約義的屬性 **數據庫

_name (required)

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

_columns (required)

字典 {字段名稱 → 字段聲明 }函數

_defaults

字典: {字段名稱→提供 字面上或者功能上的默認} _defaults['name'] = lambda self,cr,uid,context: 'eggs'工具

_auto

若是爲 True (default) ORM會自動建立數據庫表:設置爲False後, 您能夠經過 init() 方法來建立您的表/視圖;優化

_inherit

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

_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 使用 '.' 替代下劃線 '')

ORM 字段類型

• 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 { ids→values } • 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

謝謝! 歡迎提出意見!

相關文章
相關標籤/搜索