在前面的文章中,我们学习了模型层.如何创建应用数据结构以及如何使用 ORM API 来存储查看数据.本文中我们将利用前面所学的模型和记录集知识实现应用中常用的业务逻辑模式. 本文的主要内容有: 以文件为中心工作流的阶段(stage) ORM 方法装饰器:@api.multi, @api.one和@api.model onchange方法,与用户即时交互 使用 ORM 内置方法,如create, write 和 unlink Mail 插件提供的消息和活动功能 创建向导来帮助用户执行复杂操作 使用…
在前面的文章中,我们学习了模型层.如何创建应用数据结构以及如何使用 ORM API 来存储查看数据.本文中我们将利用前面所学的模型和记录集知识实现应用中常用的业务逻辑模式. 本文的主要内容有: 以文件为中心工作流的阶段(stage) ORM 方法装饰器:@api.multi, @api.one和@api.model onchange方法,与用户即时交互 使用 ORM 内置方法,如create, write 和 unlink Mail 插件提供的消息和活动功能 创建向导来帮助用户执行复杂操作 使用…
本文将学习如何为用户创建图形化界面来与图书应用交互.我们将了解不同视图类型和小组件(widgets)之间的差别,以及如何使用它们来提供更优的用户体验. 本文主要内容有: 菜单项 窗口操作(Window Actions) 表单视图结构 字段 按钮和智能按钮 动态视图元素 列表视图 搜索视图 其它视图类型 开发准备 我们将继续使用library_checkout插件模块,它已经有了模型层,现在需要视图层来实现用户界面.本文中的代码基于第八章 Odoo 12开发之业务逻辑 – 业务流程的支持,相关代码…
在本系列文章第三篇Odoo 12 开发之创建第一个 Odoo 应用中,我们概览了创建 Odoo 应用所需的所有组件.本文及接下来的一篇我们将深入到组成应用的每一层:模型层.视图层和业务逻辑层. 本文中我们将深入学习模型层,以及学习如何使用模型来设计应用所需的数据结构.我们会探索模型和字段的各项作用,包括定义模型关系.添加计算字段.创建数据约束. 本文的主要内容有: 学习项目 – 优化图书馆应用 创建模型 创建字段 模型间的关系 计算字段 模型约束 了解 Odoo的 base 模型 开发准备 本文…
Odoo 开发通常都需要创建自己的插件模块.本文中我们将通过创建第一个应用来一步步学习如何在 Odoo 中开启和安装这个插件.我们将从基础的开发流学起,即创建和安装新插件,然后在开发迭代中更新代码来进行升级. Odoo 采用类 MVC(Model-View-Controller)的结构,我们将深入到各层来实施一个图书应用.本文主要内容有: 创建一个新的模块,用来实施相关功能 添加应用的特性功能:顶级菜单项和安全组 添加一个一开始会失败但在项目完成时成功运行的自动化测试 实施模型层,定义应用的数据…
在更深入了解 Odoo 开发之前,我们应配置好开发环境并学习相关的基础管理任务.本文中,我们将学习创建 Odoo 应用所需用到的工具和环境配置.这里采用 Ubuntu 系统来作为开发服务器实例的主机,可以是云服务器.本地服务器或者PC 上的虚拟机. 本文主要内容有: 配置主机,可以是 Ubuntu系统或 PC 机上的 Linux 子系统 使用源码安装 Odoo,包括数据库和系统依赖的安装 管理 Odoo 数据库(创建.删除和拷贝) 配置 Odoo 服务器选项 查找并安装社区插件 使用虚拟环境管理…
报表是业务应用非常有价值的功能,内置的 QWeb 引擎是报表的默认引擎.使用 QWeb 模板设计的报表可生成 HTML 文件并被转化成 PDF.也就是说我们可以很便捷地利用已学习的 QWeb 知识,应用到业务报表中.本文中我们将为图书馆应用添加一个报表,复习 QWeb生成报表的关键技巧.包括像汇总一类计算.翻译和纸张样式打印. 本文主要内容有: 安装wkhtmltopdf 创建业务报表 QWeb 报表模板 在报表中展示数据 渲染图片 报表汇总 定义纸质格式 在报表中启用语言翻译 使用自定义 SQ…
QWeb 是 Odoo 使用的模板引擎,它基于 XML 来生成 HTML 片断和页面.通过 QWeb可生成内容丰富的看板(Kankan)视图.报表和 CMS 网页.本文中我们将学习QWeb 语法以及如何使用 QWeb 来创建我们自己的看板视图和自定义报表. 本文主要内容有: 看板是什么? 设计看板视图 QWeb 模板语言 看板视图的继承 添加自定义 CSS 和 JavaScript 开发准备 我们将继续使用第十章 Odoo 12开发之后台视图 – 设计用户界面完成的library_checkou…
Odoo 服务器端带有外部 API,可供网页客户端和其它客户端应用使用.本文中我们将学习如何在我们的客户端程序中使用 Odoo 的外部 API.为避免引入大家所不熟悉的编程语言,此处我们将使用基于 Python 的客户端,但这种 RPC 调用的处理方法也适用于其它编程语言. 我们将一起了解如何使用 Odoo RPC调用,然后根据所学知识使用 Python创建一个简单的图书命令行应用. 本文主要内容有: 在客户端机器上安装 Python 使用XML-RPC连接 Odoo 使用XML-RPC运行服务…
Odoo 的一个强大功能是无需直接修改底层对象就可以添加功能.这是通过其继承机制来实现的,采取在已有对象之上修改层来完成.这种修改可以在不同层上进行-模型层.视图层和业务逻辑层.我们创建新的模块来做出所需修改而无需在原有模块中直接修改. 上一篇文章中我们从零开始创建了一个新应用,本文中我们学习如何通过继承已有的核心应用或第三方模块来创建新的模块.实现以上本文将主要涵盖: 原模型扩展,为已有模型添加功能 修改数据记录来继承视图,添加功能或修改数据来修改其它模块创建的数据记录 其它模型继承机制,如代…