odoo 基础
- odoo的模型种类:- 基本模型:models.Model 数据持久化存储
- 瞬态模型:models.TransientModel 数据非持久化存储,会定期删除,相当于临时表,通常用于向导
- 抽象模型:models.AbstractModel不在数据库存储数据。抽象模型作为可重用的功能集,利用odoo的继承功能,混入到其他模型中去。通常用于定义接口或者用作报表模型。
 
- odoo 字段的属性- 
size 设置文本长度 size=16 
 string 字段标签 默认取定义 string,否则取字段名,前台可以自定义标签名称
 translate 带翻译的字段 translate = True
 trim 去空格 默认值为 True,启动在网络客户端中自动去除周围的空格,trim=False
 help 帮助文本 鼠标悬停字段向用户显示的提示文本
 readonly 字段只读 readonly=True
 required 字段必填 会数据库里创建约束
 index 索引 index=True 为字段添加数据库索引,让搜索更 1 快速,但同时也会部分降低写操作速度,默认为 False
 copy 复制 copy=False 让字段在使用 ORM copy()方法复制字段时忽略该字段。除 to-many 关联字段外,其它字段值默认会被复制
 groups 权限 groups 可限制字段仅对一些组可访问并可见。值为逗号分隔的安全组XML ID 列表,如groups=’base.group_user,base.group_system’
 invisible 隐藏 invisible=True
 default **设置字段默认值 **可以是具体值(如 active 字段中的 default=True),或是可调用引用,有名函数或匿名函数均可
 store 值存库中 字段是否设置为能存储在数据库中,默认为 True,实时计算字段默认为 False
 oldname 此字段的前一个名称,以便 ORM 可以在迁移时自动重命名它
 compute 计算字段 函数类型字段
 inverse 逆向计算函数的函数名,可选
 search 实现该字段 search 方法的函数名
 compute_sudo 是否需要使用超级管理员对该字段进行重新计算
- a = fields.Many2one(‘b’, string=‘b’, ondelete=‘set null’)  
 set null: 当b中删除记录时,modelA中相关记录的a=null 默认 cascade: 当b中删除记录时,modelA中相关记录也全部删除 restrict: 当b中删除记录时,如果modelA中存在对应记录,则无法操作 b 的删除 
 
- 
- api- 
@api.model 
 def create(self, vals_list):
 return super(Customer, self).create(vals_list)
- 
def write(self, vals): 
 return super(Customer, self).write(vals)
- 
@api.model 
 def search_read(self, domain=None, fields=None, offset=0, limit=80, order=None):
 domain = (domain or []) + ['|', ('company_id', '=', False),('company_id', 'child_of', [self.env.user.company_id.id])]
 return super(Customer, self).search_read(domain=domain, fields=fields, offset=offset, limit=limit,order=order)@api.model 
 def search_count(self, args):
 args = (args or []) + ['|', ('company_id', '=', False),('company_id', 'child_of', [self.env.user.company_id.id])]
 return super(Customer, self).search_count(args)
- constrains 校验
- 
def copy(self, default=None): 
 lines = self.component_cost_lines
 default = default if default else {}
 result = super(ComponentCost, self).copy(default)
 for line in lines:
 line.copy({
 'component_cost_id':result.id
 })
 return result
 
- 
https://blog.csdn.net/run_noob_vip/article/details/122805422 Workder的计算方法
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号