Odoo(OpenERP)对象定义详解


Odoo(OpenERP)对象定义详解

www.chinamaker.net 2011-08-17 16:59:00 admin

_sql_constraints 和 _order
    _sql_constraints定义数据表的约束条件,其格式如下例所示。
    _sql_constraints = [
        ('code_company_uniq', 'unique (code,company_id)', 'The code of the account must be unique per company !')
    ]
    本例的_sql_constraints会在数据表中增加下述约束:
    CONSTRAINT ObjectName_code_company_uniq UNIQUE(code, company_id)
    _order在对象的search或read方法中的select语句上加上"Order"子句,如 _order = 'name desc, account_id',对应SQL文的Order子句:order by name desc, account_id。
_defaults
    _defaults属性用于定义字段的缺省值,其格式为:
_defaults:
    {
        'name_of_the_field':function, ...
    }
function的返回值作为'name_of_the_field'字段的缺省值。function格式是:function(obj, cr, uid, context),返回值必须是简单类型,如boolean, integer, string 等。下面是_defaults的例子。
_defaults = {
    'date_order': lambda *a: time.strftime('%Y−%m−%d'),
    'state': lambda *a: 'draft',
    'user_id': lambda obj, cr, uid, context: uid
}
lambda是Python的行函数,"lambda obj, cr, uid, context: uid"等同于下述函数:
def func(obj, cr, uid, context):
    return uid

_inherit和_inherits
    _inherit继承有两种情况:
    1)如果子类中不定义_name属性,则相当于在父类中增加一些字段和方法,并不创建新对象。
   2)如果子类中定义_name属性,则创建一个新对象,新对象拥有老对象的所有字段和方法,老对象不受任何影响。
两种情况的示例及继承关系的图示见下面。

 

Odoo(OpenERP)对象定义详解

 

class res_partner_add_langs(osv.osv):
       _inherit = 'res.partner'
       _columns = {
           'lang_ids' : fields.many2many('res.lang', 'res_lang_partner_rel', 'partner_id', 'lang_id', 'Languages'),
       }
   res_partner_add_langs()

Odoo(OpenERP)对象定义详解

   class cursus_category(osv.osv):
       _name = 'cursus.category'
       _inherits = {'account.analytic.caccount':'analytic_caccount_id'}
       _columns = {
           'analytic_caccount_id' : fields.many2one('account.analytic.caccount', 'ID'),
       }
   cursus_category()

来源:苏州远鼎官网


相关标签 TAG :  Odoo对象  定义  


苏州远鼎

运用前沿科学技术,苏州远鼎信息技术有限公司以开源管理软件产品为核心,为企业和政府组织提供软件及服务,是OpenERP(Odoo)专业服务商,中国开源管理软件服务市场的领跑者。

Read More

远鼎产品

联系远鼎

  • 苏州工业园区星湖街328号22栋301
  • +86-0512-69361217
  • odoo@chinamaker.net
  • www.chinamaker.net