1.有两种方式,1.继承models.Model 2.继承osv.osv。(//TODO以后再研究有什么不同)
2.一个model的class对应一个实体entity表,创建model的时候,odoo会自动创建以下五个字段。
id
(Id
)the unique identifier for a record in its model
create_date
(Datetime
)creation date of the record
create_uid
(Many2one
)user who created the record
write_date
(Datetime
)last modification date of the record
write_uid
(Many2one
)user who last modified the record
3.特殊字段 name
在model里可以定义一个“name”的字段,用于系统的默认显示名称和搜索。在某些特定的场合下,可以通过重写_rec_name来重新定义。(//TODO这个)
4.•Fields
•basic
- •char,
- •boolean, integer, float
- •date, time, datetime
- •binary
•selection, function, related
•relational
- •one2one
- •one2many
- •many2one
- •Many2many
5.级联关系:
•ondelete
- •set null: 删除主记录时候,从记录到主记录的引用置为null。
- •set default: 删除主记录时候,从记录到主记录的引用置为缺省值。
- •cascade: 删除主记录时候,级联删除从记录。
- •restrict: 如果有从记录,不允许删除主记录。
- •no action: 不采取任何动作,即删除主记录,但保留从记录不变。
6.many2one是用来建立两个表之间的关联的,必须在子表里定义一个字段(实体表里也会生成这个字段),指向主表的model。
7.one2many是一个虚拟关系,定义了也不会在实体表里创建字段的。在主表里定义,指向明细表的model,并且必须指定明细表里定义的和主表相关联的字段。
8.many2many会创建一个两个实体表的主键的新的关联表。关联表为两个实体表名加_rel
如res_partner_res_partner_category_rel为res_partner和res_partner_category两个表的关联表。
9.DOMAIN就是在Model定义字段的时候,同时可以定义相关的过滤条件。