描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111625308
内容简介
本书包括基础篇、研发技术篇和实战篇,按照由基础到进阶,再到实战的顺序讲解。基础篇涉及Odoo简介、Odoo的安装与配置、Odoo应用概览、Python基础和PostgreSQL基础。通过本篇的学习,可以让读者快速掌握Odoo二次开发所需具备的基础知识。研发技术篇是本书的核心内容,涵盖了搭建模型的基础知识、模型建设进阶内容、ORM介绍以及后端视图的介绍。另外还包括了数据的导入和导出功能,以及安全设置等内容。在本篇的介绍过程当中,一直按照bug管理系统的开发为主线,从简单功能一直到整个系统完整上线,读者可以按照书中的代码,一步一步来实现该系统。实战篇则是对前面知识的融会贯通和提升,针对一个完整的培训行业管理系统的开发进行讲解,其系统的复杂性和难度都要比第二篇增强。
目 录
前言
第一篇 基础篇
第1章 Odoo简介 2
1.1 Odoo发展历程 2
1.2 Odoo与主流ERP系统的对比 3
1.3 总结 4
第2章 安装与配置 5
2.1 在Ubuntu上安装Odoo 5
2.1.1 创建Odoo用户并授权 5
2.1.2 更新依赖包并使用git克隆Odoo源码 6
2.1.3 安装Odoo依赖包及PostgreSQL 6
2.1.4 启动Odoo服务 7
2.2 在Windows上安装Odoo 8
2.2.1 准备工作 9
2.2.2 环境配置 9
2.3 使用和创建Odoo数据库 10
2.3.1 创建Odoo数据库 10
2.3.2 语言选择 11
2.4 服务器配置 13
2.4.1 Odoo服务器配置文件 13
2.4.2 远程开发 15
2.5 安装模块 16
2.5.1 配置模块插件路径 16
2.5.2 更新应用列表 16
2.6 总结 17
第3章 Odoo应用概览 18
3.1 整体架构 18
3.2 什么是开发者模式 19
3.3 开发者模式应用 20
3.3.1 模块需求简介 21
3.3.2 向已有模型新增字段 21
3.3.3 新建菜单 25
3.3.4 新建自定义模型 28
3.3.5 新建视图 29
3.3.6 安全性配置 30
3.4 base模块简介 32
3.5 总结 32
第4章 Python基础 33
4.1 Python简介 33
4.2 安装和设置 34
4.2.1 Anaconda的安装 34
4.2.2 Anaconda Prompt包管理 35
4.3 基本语法 35
4.3.1 编码 36
4.3.2 标识符 36
4.3.3 Python保留字 36
4.3.4 注释 36
4.3.5 行与缩进 36
4.3.6 数值类型 37
4.3.7 字符串 37
4.3.8 布尔值 38
4.3.9 类型转换 38
4.3.10 引入 38
4.3.11 万物皆对象 39
4.3.12 元组 39
4.3.13 列表 40
4.3.14 字典 43
4.3.15 集合 44
4.3.16 列表、字典以及集合的推导式 45
4.3.17 函数 46
4.3.18 文件和操作系统 48
4.4 面向对象的编程 48
4.4.1 self 49
4.4.2 对象的方法 49
4.4.3 __init__方法 49
4.4.4 类与对象的变量 50
4.4.5 继承 51
4.4.6 装饰器 52
4.5 总结 53
第5章 PostgreSQL基础 54
5.1 PostgreSQL简介 54
5.2 pgAdmin使用简介 55
5.2.1 创建数据库 55
5.2.2 删除数据库 55
5.2.3 使用SQL语句 57
5.3 PostgreSQL常用SQL语句 58
5.3.1 查询语句 58
5.3.2 更新语句 59
5.3.3 删除语句 59
5.3.4 插入语句 59
5.4 总结 59
第二篇 技术研发篇
第6章 自建应用入门 62
6.1 使用脚手架创建新模块 62
6.2 安装和更新模块 64
6.3 模型 65
6.3.1 创建模型 66
6.3.2 常用属性 67
6.3.3 保留字段 67
6.3.4 模型继承 67
6.4 视图 69
6.4.1 新增菜单 69
6.4.2 创建列表视图 71
6.4.3 业务文档表单视图 72
6.4.4 搜索视图 74
6.4.5 视图继承 74
6.5 业务逻辑 76
6.6 安全性配置 77
6.6.1 访问控制 77
6.6.2 网页和控制器 79
6.7 总结 80
第7章 自建应用进阶 81
7.1 模型 81
7.1.1 模型属性 83
7.1.2 模型与python类 83
7.1.3 瞬态和抽象模型 84
7.1.4 透视已有模型 84
7.1.5 模型扩展 85
7.2 字段 86
7.2.1 创建字段 86
7.2.2 字段常用属性 87
7.2.3 特殊字段 88
7.3 模型关系与复杂字段 88
7.3.1 关系字段 89
7.3.2 模型关系 89
7.3.3 one2many的逆向关系 91
7.3.4 层级结构关系 91
7.3.5 使用引用字段的动态关系 92
7.4 更多模型继承机制 93
7.4.1 使用原型继承 93
7.4.2 使用委托继承 94
7.5 视图 94
7.6 总结 97
第8章 文件相关数据操作 98
8.1 外部ID 98
8.2 导入导出数据 101
8.2.1 导出数据 101
8.2.2 导入数据 102
8.2.3 CSV中关联字段的导入 103
8.3 模块数据 104
8.3.1 演示数据 104
8.3.2 XML数据文件 105
8.4 总结 108
第9章 ORM API基础 109
9.1 常用装饰器 109
9.1.1 记录集处理装饰器 109
9.1.2 专有目的装饰器 110
9.2 ORM内置方法 112
9.2.1 模型写入数据的方法 112
9.2.2 使用RPC的网页端方法 113
9.3 数据导入导出方法 114
9.4 通信API 114
9.4.1 邮箱和社交API 115
9.4.2 消息子类型 116
9.4.3 发布消息 116
9.4.4 增加关注者 117
9.5 总结 117
第10章 ORM:业务逻辑处理 118
10.1 向导 118
10.1.1 创建向导 118
10.1.2 向导模型 120
10.1.3 向导form 120
10.1.4 向导业务逻辑 123
10.1.5 异常处理 124
10.2 更多ORM API用法 126
10.2.1 shell命令 126
10.2.2 服务器环境 127
10.2.3 事务和底层SQL 128
10.3 对记录集的操作 130
10.3.1 查询模型 130
10.3.2 单例模式 131
10.3.3 写记录集 131
10.3.4 日期和时间 132
10.3.5 操作记录集 133
10.3.6 关系字段 135
10.4 总结 135
第11章 创建网站 136
11.1 第一个页面 136
11.1.1 创建新模块插件 136
11.1.2 Hello World 137
11.1.3 Web功能扩展 138
11.1.4 Hello CMS 141
11.2 前端页面渲染 142
11.2.1 CSS和JavaScript 142
11.2.2 列表页面 143
11.2.3 表单页面
第一篇 基础篇
第1章 Odoo简介 2
1.1 Odoo发展历程 2
1.2 Odoo与主流ERP系统的对比 3
1.3 总结 4
第2章 安装与配置 5
2.1 在Ubuntu上安装Odoo 5
2.1.1 创建Odoo用户并授权 5
2.1.2 更新依赖包并使用git克隆Odoo源码 6
2.1.3 安装Odoo依赖包及PostgreSQL 6
2.1.4 启动Odoo服务 7
2.2 在Windows上安装Odoo 8
2.2.1 准备工作 9
2.2.2 环境配置 9
2.3 使用和创建Odoo数据库 10
2.3.1 创建Odoo数据库 10
2.3.2 语言选择 11
2.4 服务器配置 13
2.4.1 Odoo服务器配置文件 13
2.4.2 远程开发 15
2.5 安装模块 16
2.5.1 配置模块插件路径 16
2.5.2 更新应用列表 16
2.6 总结 17
第3章 Odoo应用概览 18
3.1 整体架构 18
3.2 什么是开发者模式 19
3.3 开发者模式应用 20
3.3.1 模块需求简介 21
3.3.2 向已有模型新增字段 21
3.3.3 新建菜单 25
3.3.4 新建自定义模型 28
3.3.5 新建视图 29
3.3.6 安全性配置 30
3.4 base模块简介 32
3.5 总结 32
第4章 Python基础 33
4.1 Python简介 33
4.2 安装和设置 34
4.2.1 Anaconda的安装 34
4.2.2 Anaconda Prompt包管理 35
4.3 基本语法 35
4.3.1 编码 36
4.3.2 标识符 36
4.3.3 Python保留字 36
4.3.4 注释 36
4.3.5 行与缩进 36
4.3.6 数值类型 37
4.3.7 字符串 37
4.3.8 布尔值 38
4.3.9 类型转换 38
4.3.10 引入 38
4.3.11 万物皆对象 39
4.3.12 元组 39
4.3.13 列表 40
4.3.14 字典 43
4.3.15 集合 44
4.3.16 列表、字典以及集合的推导式 45
4.3.17 函数 46
4.3.18 文件和操作系统 48
4.4 面向对象的编程 48
4.4.1 self 49
4.4.2 对象的方法 49
4.4.3 __init__方法 49
4.4.4 类与对象的变量 50
4.4.5 继承 51
4.4.6 装饰器 52
4.5 总结 53
第5章 PostgreSQL基础 54
5.1 PostgreSQL简介 54
5.2 pgAdmin使用简介 55
5.2.1 创建数据库 55
5.2.2 删除数据库 55
5.2.3 使用SQL语句 57
5.3 PostgreSQL常用SQL语句 58
5.3.1 查询语句 58
5.3.2 更新语句 59
5.3.3 删除语句 59
5.3.4 插入语句 59
5.4 总结 59
第二篇 技术研发篇
第6章 自建应用入门 62
6.1 使用脚手架创建新模块 62
6.2 安装和更新模块 64
6.3 模型 65
6.3.1 创建模型 66
6.3.2 常用属性 67
6.3.3 保留字段 67
6.3.4 模型继承 67
6.4 视图 69
6.4.1 新增菜单 69
6.4.2 创建列表视图 71
6.4.3 业务文档表单视图 72
6.4.4 搜索视图 74
6.4.5 视图继承 74
6.5 业务逻辑 76
6.6 安全性配置 77
6.6.1 访问控制 77
6.6.2 网页和控制器 79
6.7 总结 80
第7章 自建应用进阶 81
7.1 模型 81
7.1.1 模型属性 83
7.1.2 模型与python类 83
7.1.3 瞬态和抽象模型 84
7.1.4 透视已有模型 84
7.1.5 模型扩展 85
7.2 字段 86
7.2.1 创建字段 86
7.2.2 字段常用属性 87
7.2.3 特殊字段 88
7.3 模型关系与复杂字段 88
7.3.1 关系字段 89
7.3.2 模型关系 89
7.3.3 one2many的逆向关系 91
7.3.4 层级结构关系 91
7.3.5 使用引用字段的动态关系 92
7.4 更多模型继承机制 93
7.4.1 使用原型继承 93
7.4.2 使用委托继承 94
7.5 视图 94
7.6 总结 97
第8章 文件相关数据操作 98
8.1 外部ID 98
8.2 导入导出数据 101
8.2.1 导出数据 101
8.2.2 导入数据 102
8.2.3 CSV中关联字段的导入 103
8.3 模块数据 104
8.3.1 演示数据 104
8.3.2 XML数据文件 105
8.4 总结 108
第9章 ORM API基础 109
9.1 常用装饰器 109
9.1.1 记录集处理装饰器 109
9.1.2 专有目的装饰器 110
9.2 ORM内置方法 112
9.2.1 模型写入数据的方法 112
9.2.2 使用RPC的网页端方法 113
9.3 数据导入导出方法 114
9.4 通信API 114
9.4.1 邮箱和社交API 115
9.4.2 消息子类型 116
9.4.3 发布消息 116
9.4.4 增加关注者 117
9.5 总结 117
第10章 ORM:业务逻辑处理 118
10.1 向导 118
10.1.1 创建向导 118
10.1.2 向导模型 120
10.1.3 向导form 120
10.1.4 向导业务逻辑 123
10.1.5 异常处理 124
10.2 更多ORM API用法 126
10.2.1 shell命令 126
10.2.2 服务器环境 127
10.2.3 事务和底层SQL 128
10.3 对记录集的操作 130
10.3.1 查询模型 130
10.3.2 单例模式 131
10.3.3 写记录集 131
10.3.4 日期和时间 132
10.3.5 操作记录集 133
10.3.6 关系字段 135
10.4 总结 135
第11章 创建网站 136
11.1 第一个页面 136
11.1.1 创建新模块插件 136
11.1.2 Hello World 137
11.1.3 Web功能扩展 138
11.1.4 Hello CMS 141
11.2 前端页面渲染 142
11.2.1 CSS和JavaScript 142
11.2.2 列表页面 143
11.2.3 表单页面
前 言
Odoo是什么
Odoo是一个开放源码且功能完善的企业级管理软件平台,它不仅提供了ERP常规模块,而且还允许使用人员进行灵活的实施配置。对于前台配置解决不了的需求,还可以通过Odoo提供的平台进行二次开发。
我曾在SAP领域工作了8年,参与和主导过的项目金额超过千万元,因此我能深刻体会到一个好的ERP产品在实施过程中是多么重要。目前国内虽然也有不错的ERP产品,但全是靠厂商及其合作伙伴来实施并进行二次开发,如果甲方想要自己培养技术人员则非常困难,很少有技术人员愿意将自己的职业发展方向捆绑在一个封闭又落后的技术框架上。这时候,Odoo开源及其使用Python开发的优点就显现了出来,不仅企业可以免费配置使用,而且还可以方便地找到二次开发人员,甚至也可以找到具有学习热情的内部人员。毕竟Python的魅力及其在互联网领域越来越广的应用,决定了以后Odoo开发的难度会越来越低。
Odoo良好的可扩展性可以媲美任何主流的ERP产品,其允许按照模块实现新的需求;在二次开发的过程中,如果要修改已有功能的话,也不需要直接修改源码,只需使用继承的方式来进行增强和扩展,或者在子类中修改字段或方法。
Odoo从其前身OpenERP开始,就受到了来自社区的活跃更新的支持;目前,Odoo有数千个社区模块,几乎所有的主题都能找到相应的社区模块,这也反过来进一步吸引了更多的人员参与到Odoo的社区中来。
谁适合阅读本书
本书作为Odoo的开发指南,按照由简入难的步骤对Odoo的开发进行了全面介绍,不仅可以让你快速入门Odoo,同时也可以作为你进行项目实战的不错的参考资料。
本书适合于想使用Odoo进行开发的开发者,在阅读本书前甚至不需要具备Python基础编程知识,因为书中专门有一章(第4章)对Python进行了介绍。书中所列案例使用的代码简单明了,对于使用中会遇到的一些“坑”也给出了特别说明。
同时,本书也适合于Odoo的关键用户和最终用户,如果你在拥有Odoo系统的使用经验的前提下,还希望提升自己的开发技能,以便日后在工作中能够完成更为复杂的需求实现,那么本书将是非常好的参考用书。
如果你已经是Odoo开发人员,那么可以将本书作为不同版本之间的对比用书,毕竟从Odoo8到目前的Odoo12有了较大的变化。
最后,在校大学生也可以使用本书制作自己的案例、编写论文,甚至直接作为未来工作的编程平台。Odoo在国内的市场越来越大,特别是非一线城市对于Odoo人才的需求也越来越大,如果作为学生的你不想将自己未来的职场定位在北上广深,那么Odoo将是一个非常不错的选择。
如何阅读本书
本书在逻辑上分为三篇:基础篇、技术研发篇和实战篇。基础篇(第1~5章)包括了Odoo的介绍及安装配置、Python基础和PostgreSQL数据库介绍。不了解Odoo的读者请认真阅读第一篇,以免在后面的章节中出现不了解的名词。特别是没有Python基础的读者,最好能够认真学习第4章。
技术研发篇(第6~14章)则专注在Odoo的技术范畴内,包括了从视图到ORM和安全配置的全方位介绍,并且都是以bug管理系统的实现为示例来进行讲解的,读者在学习本篇内容时应边参考本书边动手实现。如果读者已经有Odoo基础,则可以直接下载本书的源码,在遇到不理解的内容时再查找相应知识点。
而对于实战篇(第15~19章),其内容从培训机构的管理系统的需求分析开始,再到划分模块,最后到具体的逻辑和视图的实现,非常适合有充足时间的初学者,特别是学生。
读者在阅读本书时,要注意源码的使用,具体的源码下载方式会在后续的“源码与勘误支持”部分提供。
在阅读本书的过程中,读者有任何疑问都可以访问作者网站www.scott-odoo.com,以进行提问和交流。
源码与勘误支持
书中提供了核心源码,而且为了便于阅读特意增加了行号。需要读者注意的是,因为排版的问题,可能将原本属于一行的代码自动换行成两行,所以请读者以行号为准,凡是不带行号的代码说明都属于上一行。
本书的示例代码以及实战项目的源码可以到GitHub下载,下载地址为:
https://github.com/ScottAI/Odoo-Python-ERP-
实战项目同时支持Odoo11和Odoo12,Odoo端的下载地址如下:
https://github.com/ScottAI/-Odoo—
实战项目的小程序端下载地址为:
https://github.com/ScottAI/lexuebao-odoo-wechat
由于作者的水平有限,加之撰写时间仓促,难免有错误或不合理之处,欢迎读者指正,你可以通过以下任何一种方式联系到作者:
作者的QQ:784680552
作者的邮箱:[email protected]
作者的个人博客:www.scott-odoo.com
Odoo是一个开放源码且功能完善的企业级管理软件平台,它不仅提供了ERP常规模块,而且还允许使用人员进行灵活的实施配置。对于前台配置解决不了的需求,还可以通过Odoo提供的平台进行二次开发。
我曾在SAP领域工作了8年,参与和主导过的项目金额超过千万元,因此我能深刻体会到一个好的ERP产品在实施过程中是多么重要。目前国内虽然也有不错的ERP产品,但全是靠厂商及其合作伙伴来实施并进行二次开发,如果甲方想要自己培养技术人员则非常困难,很少有技术人员愿意将自己的职业发展方向捆绑在一个封闭又落后的技术框架上。这时候,Odoo开源及其使用Python开发的优点就显现了出来,不仅企业可以免费配置使用,而且还可以方便地找到二次开发人员,甚至也可以找到具有学习热情的内部人员。毕竟Python的魅力及其在互联网领域越来越广的应用,决定了以后Odoo开发的难度会越来越低。
Odoo良好的可扩展性可以媲美任何主流的ERP产品,其允许按照模块实现新的需求;在二次开发的过程中,如果要修改已有功能的话,也不需要直接修改源码,只需使用继承的方式来进行增强和扩展,或者在子类中修改字段或方法。
Odoo从其前身OpenERP开始,就受到了来自社区的活跃更新的支持;目前,Odoo有数千个社区模块,几乎所有的主题都能找到相应的社区模块,这也反过来进一步吸引了更多的人员参与到Odoo的社区中来。
谁适合阅读本书
本书作为Odoo的开发指南,按照由简入难的步骤对Odoo的开发进行了全面介绍,不仅可以让你快速入门Odoo,同时也可以作为你进行项目实战的不错的参考资料。
本书适合于想使用Odoo进行开发的开发者,在阅读本书前甚至不需要具备Python基础编程知识,因为书中专门有一章(第4章)对Python进行了介绍。书中所列案例使用的代码简单明了,对于使用中会遇到的一些“坑”也给出了特别说明。
同时,本书也适合于Odoo的关键用户和最终用户,如果你在拥有Odoo系统的使用经验的前提下,还希望提升自己的开发技能,以便日后在工作中能够完成更为复杂的需求实现,那么本书将是非常好的参考用书。
如果你已经是Odoo开发人员,那么可以将本书作为不同版本之间的对比用书,毕竟从Odoo8到目前的Odoo12有了较大的变化。
最后,在校大学生也可以使用本书制作自己的案例、编写论文,甚至直接作为未来工作的编程平台。Odoo在国内的市场越来越大,特别是非一线城市对于Odoo人才的需求也越来越大,如果作为学生的你不想将自己未来的职场定位在北上广深,那么Odoo将是一个非常不错的选择。
如何阅读本书
本书在逻辑上分为三篇:基础篇、技术研发篇和实战篇。基础篇(第1~5章)包括了Odoo的介绍及安装配置、Python基础和PostgreSQL数据库介绍。不了解Odoo的读者请认真阅读第一篇,以免在后面的章节中出现不了解的名词。特别是没有Python基础的读者,最好能够认真学习第4章。
技术研发篇(第6~14章)则专注在Odoo的技术范畴内,包括了从视图到ORM和安全配置的全方位介绍,并且都是以bug管理系统的实现为示例来进行讲解的,读者在学习本篇内容时应边参考本书边动手实现。如果读者已经有Odoo基础,则可以直接下载本书的源码,在遇到不理解的内容时再查找相应知识点。
而对于实战篇(第15~19章),其内容从培训机构的管理系统的需求分析开始,再到划分模块,最后到具体的逻辑和视图的实现,非常适合有充足时间的初学者,特别是学生。
读者在阅读本书时,要注意源码的使用,具体的源码下载方式会在后续的“源码与勘误支持”部分提供。
在阅读本书的过程中,读者有任何疑问都可以访问作者网站www.scott-odoo.com,以进行提问和交流。
源码与勘误支持
书中提供了核心源码,而且为了便于阅读特意增加了行号。需要读者注意的是,因为排版的问题,可能将原本属于一行的代码自动换行成两行,所以请读者以行号为准,凡是不带行号的代码说明都属于上一行。
本书的示例代码以及实战项目的源码可以到GitHub下载,下载地址为:
https://github.com/ScottAI/Odoo-Python-ERP-
实战项目同时支持Odoo11和Odoo12,Odoo端的下载地址如下:
https://github.com/ScottAI/-Odoo—
实战项目的小程序端下载地址为:
https://github.com/ScottAI/lexuebao-odoo-wechat
由于作者的水平有限,加之撰写时间仓促,难免有错误或不合理之处,欢迎读者指正,你可以通过以下任何一种方式联系到作者:
作者的QQ:784680552
作者的邮箱:[email protected]
作者的个人博客:www.scott-odoo.com
评论
还没有评论。