一 模型使用
模型的属性结构:
_name 业务对象的名称
_rec_name 可选的name字段名称,供osv的name_get()方法使用,默认值name
_inherit 如果设置了name属性,它的取值是单个或多个父级的模型名称;没有设置name属性时,只能是单个模型名称
_order 在搜索的时候的默认排序,默认值是id
_auto 指定该表是否需要创建,默认值是True,如果设置成False需要重写init方法来创建表
_table 当_auto设置成false时,该值为创建的表名;默认情况下会自动生成一个
_inherits 定义上级模型关联使用的外键
1 ORM的CRUD
- create(vals) 增
- browse([ids]) 查
- unlink() 删
- write(vals) 改
int或float型字段,给定的值须为对应的整型或浮点型
布尔型字段,对应的值须为bool型
Selection字段,给定的值须符合条件
Many2one字段,给定的值须与对应的数据库记录相符
其他无关联关系的字段使用字符串作值
One2many和Many2many字段通过一个特殊的格式命令来操纵对应字段值,通过一系列三元组按顺序来对数据进行操作,下面是一些常用的:
(0, _, values) 为指定的value字典添加一条新记录
(1, id, values) 更新一条现有记录,条件是id为指定id且value在指定values中,不能在create方法里使用
(2, id, _) 将指定id的数据从数据集中删除并从数据库删除,不能在create里使用
(3, id, _) 将指定id的数据从数据集中删除但不从数据库删除,不能用在One2many关系及create里
(4, id, _) 将指定id的数据添加到数据集中,不能用在One2many关系上
(5, _, _) 将集合的所有数据删除,相当于当3作用于每条记录上
(6, _, ids) 使用ids列表里匹配的所有数据替换当前记录,相当于先执行5再循环执行4
read([fields]) 从self里读取指定的字段,专供rpc使用
read_group(domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True) 得到一个通过groupby参数分组后的记录的列表
2 searching
- search(args[, offset=0][, limit=None][, order=None][, count=False])
根据args参数里的domain表达式来搜索所有记录,参数列表:
1.args domain表达式,为空时返回所有记录
2.offset (int) 从第几条记录开始取
3.limit (int) 返回记录行数的最大值
4.order (str) 排序的字段
5.count (bool) 当值为True的时候只返回匹配记录的条数
- search_count(args)
返回根据给定domain表达式参数查询所得到的记录条数
- name_search(name='', args=None, operator='ilike', limit=100)
返回根据name条件来查询,并满足args指定的domain表达式的记录集合
name (str) -- 用来匹配的name字符串
args (list) -- domain表达式列表
operator (str) -- 用来匹配的操作符,如: 'like' , '='.
limit (int)