你们好,git
为了方便各位开发大咖快速找到资料,这里总结了odoo开发中的一些基础信息,还望你们提出意见。sql
**预约义的属性 **数据库
_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 使用 '.' 替代下划线 '')
• 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
谢谢! 欢迎提出意见!