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的计算方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示