odoo模块开发

odoo脚手架

为了方便开发odoo模块,可以在项目的终端中输入

python odoo-bin scaffold addons myaddons 

这样就在项目的myaddons文件夹中生成了名称addons的模块。

odoo规范

odoo开发规范 | 同欣数字化落地 (txodoo.cn)

odoo结构

  • controllers: 主要是一些HTTP请求相关的业务逻辑。
  • models: 模型文件夹,业务的模型都放在这里。
  • security: 权限相关的文件。
  • views: 视图文件夹,关于界面布局的逻辑在这里。
  • static: 静态文件夹,前端使用的qweb文件和js、css文件和图片等静态文件放到这个文件夹内。
  • __init__:熟悉python的都懂,不说了
  • __manifest__: 9.0之前叫_openerp_.py,Odoo模块必须的文件,包含必要的模块信息。

模型(model)

odoo模块的模型通常在models/目录下,当新增模型时,需要在models/__init__.py中增加模型名称。

odoo所有的持久化模型都要继承自models.Model类。

在脚手架生成的事例中,_name是这个models的名称,而_description是models的描述,当我们要继承某个models的时候,我们可以用_inherit表示继承。

继承:被继承models会拥有继承的models的所有字段。

字段(fields)

上述例子中,给一个变量初始化定义后被称为字段。

odoo有许多字段:

  1. 字符串字段(Char):用于存储文本数据,如名称、标题等。
  2. 整数字段(Integer):用于存储整数值,如计数器、年龄等。
  3. 浮点数字段(Float):用于存储浮点数值,如价格、百分比等。
  4. 布尔字段(Boolean):用于存储布尔值(True或False),如开关状态、勾选框等。
  5. 日期字段(Date):用于存储日期值,如生日、合同日期等。
  6. 日期时间字段(Datetime):用于存储日期和时间值,如创建时间、更新时间等。
  7. 二进制字段(Binary):用于存储二进制数据,如图像、文件等。
  8. 选择字段(Selection):用于从预定义选项中选择一个值,如状态、类型等。
  9. 文本字段(Text):用于存储多行文本数据,如描述、备注等。
  10. HTML字段(Html):用于存储富文本数据,支持HTML格式,如富文本公告、邮件正文等。
  11. 关系字段(Many2one、One2many、Many2many):用于建立与其他模型之间的关联关系,如产品与供应商的关系、订单与产品的关系等。

方法

模型中存在方法,可以进行较为复杂数据处理。

常见的方法有:

  1. create(self, values):用于创建新记录,接收一个字典参数values,包含要创建记录的字段值。
  2. write(self, values):用于更新现有记录,接收一个字典参数values,包含要更新记录的字段值。
  3. unlink(self):用于删除记录。
  4. read(self, fields=None):用于读取记录的字段值,可以指定要读取的字段列表。
  5. search(self, domain=None, offset=0, limit=None, order=None):用于根据条件搜索符合要求的记录。
  6. browse(self, ids):用于获取指定记录ID的记录对象。
  7. copy(self, default=None):用于复制记录,可以指定默认值来更改复制记录的字段值。
  8. onchange(self, field_name):用于在字段值发生变化时触发的方法,可以在该方法中处理其他字段的变化或执行其他操作。
  9. compute(self):用于计算字段的值,通过该方法可以定义计算字段的逻辑。
  10. action_xxx(self):用于执行自定义的动作,其中"xxx"表示动作的名称,可以根据需要定义不同的动作方法。
  11. button_xxx(self):用于执行与按钮相关的操作,通常用于处理用户交互。
  12. _get_xxx(self):用于获取计算字段的值,其中"xxx"表示计算字段的名称。
  13. _set_xxx(self, value):用于设置计算字段的值,其中"xxx"表示计算字段的名称。

注解

如上述图中的方法上面的称为注解。

注解一般有以下几种:

  1. @api.one:用于标记实例方法,表示该方法将在单个记录上执行。
  2. @api.depends('field_name'):用于指定计算字段(computed field)所依赖的字段。当被依赖的字段发生变化时,计算字段将被重新计算。
  3. @api.onchange('field_name'):用于标记字段变化触发的方法。当指定的字段值发生变化时,该方法将被自动调用。
  4. @api.constrains('field_name'):用于标记约束方法,用于执行字段级别的约束检查。
  5. @api.constraints('constraint_name'):用于标记约束方法,并指定约束名称。可以在模型中定义多个约束方法。
  6. @api.model_create_multi:用于标记创建多个记录的方法。通常用于批量创建记录的情况。
  7. @api.model_create_single:用于标记创建单个记录的方法。
  8. @api.returns('model_name'):用于指定方法的返回类型,其中'model_name'表示返回模型的名称。

视图(view)

odoo模块下的视图文件通常在view/目录下,当新增视图文件时,需要在__manifast__.py的'data'中添加。

视图文件有先后顺序,请务必检查,否则会报错。

动作视图(action)

在系统上每一个交互就是一个动作,动作视图是交互时的一个引导。

图中定义了addons.action_window的动作视图,模型是addons.addons,包含的视图为tree,form视图。

列表视图(tree)

用于以表格形式显示多个记录,每行代表一个记录,可以选择显示的字段和排序方式。

表单视图(form)

用于显示单个记录的详细信息,通常包含各个字段和相关操作按钮。

搜索视图(search)

用于定义搜索记录的条件和过滤器,用户可以根据特定条件搜索符合要求的记录。

报表视图(report)

用于生成和显示打印或导出的报表,可以基于模板定义报表的结构和样式。一般将报表视图存放在report/目录下。

看板视图(kanban)

用于以卡片形式显示记录,每个卡片代表一个记录,可以根据状态进行分组和拖放操作。

菜单(menuitem)

菜单是显示模块的入口。

小部件(widget)

1 ERP 简介 1 1.1 Odoo 历史 1 1.2 ERPⅡ 或商业智能化 2 1.2.1 什么是商业智能 4 2 Odoo 框架简介 7 2.1 python 模块分析 8 2.2 python2 还是 python3 8 3 Odoo 的安装和配置 9 3.1 PostgreSQL 数据库 10 3.2 Ubuntu14.04 下可能缺失的软件包 11 3.3 网页显示 node.js 方面 11 3.4 其他问题 12 3.5 通过命令行运行时的配置 12 3.5.1 –xmlrpc-port=8888 12 3.5.2 –addons-path=addons 12 3.5.3 数据库的一些配置 13 3.5.4 –save 13 3.6 将安装环境封装起来 13 3.7 文档编译 14 4 初入 Odoo 17 4.1 管理数据库 17 4.2 登录界面 18 4.3 Administrator 首选项 19 4.4 导入一个翻译 20 4.5 新的 Demo 用户 20 4.6 模块管理 21 4.7 修改公司信息 21 4.8 打开技术特性支持之后 22 4.9 进销存和财务系统的抽象讨论 22 4.9.1 以采购部门为例 23 4.10 安装和配置模块 24 5 创建自己的模块 27 5.1 快速生成模块骨架 27 5.1.1 python 模块的 init 文件 28 5.1.2 作为 Odoo 模块的说明文件 29 5.2 安装自定义模块 32 5.2.1 模块文件夹管理 32 5.3 一个简单的演示模块 33 5.3.1 controllers 33 5.3.2 views 33 5.3.3 models 35 5.3.4 security 37 5.3.5 美化网页 38 5.4 加分项: 通过 pgadmin3 来查看数据库 39 5.4.1 安装 39 5.4.2 连接服务器 39 5.4.3 图形化查询 40 6 Odoo 开发基础: 请假模块第一谈 43 6.1 纯理论讨论 43 6.2 定义模型 45 6.3 加入菜单 46 6.3.1 act_window 的属性 48 6.3.2 menuitem 的属性 48 6.4 视图优化 48 6.4.1 修改 tree 视图 49 6.4.2 修改 form 视图 49 6.5 完整的 views.xml 51 6.6 给模块加个图标 53 7 Odoo 开发基础: 工作计划模块第一谈 55 7.1 数据访问权限管理 61 7.1.1 access rule 62 7.1.2 record rule 62 8 扩展现有模块-继承机制 65 8.1 给模块增加 field 65 8.2 修改已有的 field 66 8.3 重载原模型的方法 66 8.3.1 什么是 Recordset 67 8.3.2 Odoo 里面的 domain 语法 68 8.3.3 recordset 的 search 方法 69 8.4 视图 xml 文件的继承式修改 70 8.4.1 视图元素添加 71 8.4.2 原视图元素属性修改 71 8.5 多态继承 72 8.6 修改其他数据文件 73 8.6.1 删除记录 73 8.6.2 更新数据 73 8.7 委托继承 74 9 理解模型内的数据文件 75 9.1 理解外部 id 75 9.2 使用外部 id 77 9.3 导出或导入数据文件 77 9.4 快捷输入标签 78 9.5 用 field 标签设置值 78 9.5.1 eval 语法 78 9.5.2 ref 属性 79 9.5.3 One2many 和 Many2many 的 eval 赋值 79 10 Odoo 开发基础: 请假模块第二谈 81 10.1 本例涉及到的数据库表格简介 89 10.2 工作流概念入门 89 10.2.1 定义工作流对象 90 10.2.2 创建节点 91 10.2.3 创建连接 91 11 Odoo 模型层详解 93 11.1 _name 93 11.2 各个表头属性 93 11.3 name 字段 94 11.4 具体模型的数据 94 11.5 模型间的关系 95 11.6 工作流 95 12 Odoo 视图层详解 97 13 附录 99 13.1 Odoo 里老的 API 99 13.2 PostgreSQL 数据库命令行操作 99 13.2.1 命令行数据库备份 99 13.3 反向代理 (reverse proxy) 99 13.3.1 安装 ngnix 软件 100 13.3.2 强制 https 连接 102 13.3.3 nginx 优化 102 13.3.4 轮询机制 102 13.4 跟踪项目源码初始化进程 102 13.4.1 base 模块 104 13.4.2 web 模块 105 13.4.3 web_kanban 模块 105 13.5 配置会计科目 105 13.5.1 配置会计科目类型 105 13.5.2 配置会计科目 106 13.6 分录 106 13.7 新建业务伙伴 106 13.7.1 新建业务伙伴标签 106 13.7.2 新建客户 106 13.8 创建新的产品 107 13.9 设置会计年度 107 13.10向供应商下单 107 13.11会计学入门 107 13.11.1财务报表 108 13.11.2原始凭证 108 13.11.3账户 108 13.11.4分类帐 109 13.11.5会计科目表 109 13.11.6报告期间 110 13.12参考资料 110
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值