本章节我们将向大家介绍用odoo16写好一个应用插件的5个步骤。
(资料图)
我们还是以《odoo16 创建第一个应用插件》中的学生管理为例,在前面出现过的代码本章中就不再出现。
步骤一:需求分析
步骤说明:
1、需求分析的主要目的是确定项目或系统的目标
2、所涉及到的功能在odoo原生代码中是否已经存在;这一步其实很难,因为需要知道odoo到底有哪些功能;
3、如果存在,和我们的需求是否一致,有哪些场景是我们可以借鉴的。
举例说明:
1、通过需求分析→详细设计后,得到的E-R图或流程图就是我们要开发的功能。
2、学生管理在odoo中不存在,我们需要新增模型来实现。于是我们需要用4个基础数据模型和2个业务模型来管理学生。
数据模型:年级、班级、学生、课程
业务模型:选课、选课明细
步骤二:模型实现
步骤说明:
根据规范,实现插件生成、后端模型、权限控制、前端视图。
如果是才接触odoo,这一步骤不需要去关心字段是否必填、是否可读、是否可见等字段属性,哪怕把所有的字段都显示出来也没有关系。
举例说明:
《odoo16 创建第一个应用插件》这一章的目的就是实现这一步骤。
步骤三:数据表内的逻辑关系
步骤说明:
1、这一步骤就需要去关心字段是否必填、是否可读、是否可见、字段跟踪等字段属性了,比如学生的姓名必填;
常用到的有:required、tracking、default,这一部分在odoo字段类型详解有详细说明。
2、数据表内的字段计算关系,比如根据身份证号计算出出生年月和性别;这一步骤会经常用到depends、onchange、constrains,这些称之为装饰器;depends和constrains是在数据写入时触发,onchange是在前端视图上变化时触发,注意体会其区别;
3、有些字段还需要定时任务来实现,比如年龄随着时间的变化而变化;
举例说明:
以学生模型为例:
定时任务实现方式:
在data目录下增加ir_cron_
在__manifest__.py中引用
步骤四:数据表间的逻辑关系
步骤说明:
1、比如一个班级有多少个学生,是班级表与学生表之间的关系;
一个年级有多少个班级,是年级表与班级表之间的关系;
一个学生选了多少门课,是学生表与课程表之间的关系;
2、这一步骤在后端模型中会经常用到depends、onchange、constrains;在前端视图中经常会用到oe_button_box在form中显示关系;
3、特别注意的是字段的ondelete属性,True说明父表记录删除时,子表也要删除;比如年级删除时,班级也需要删除;班级删除时,学生记录就不需要删除,因为学生是通过入学与班级关联起来的,不管班级存不存在,学生都是存在的,这时ondelete就是False或者不设置;
举例说明:
一个班级有多少个学生,这里有两个方法,一个是计算学生数量,一个是查看学生明细;
class_archives_
对应的视图也需要修改,有两种方式,可以放到button_box里面,也可以放到page页签中;
步骤五:业务逻辑关系
步骤说明:
1、当把前面的几个步骤都实现时,就可以开始业务逻辑关系代码的编写;
2、表内状态的变化,比如课程设置好了的确认;表间的业务逻辑关系,比如学生的选课,学生年级的变化等,都属于业务逻辑关系,当然这是比较简单的举例;
举例说明:
为学生设置了状态,通过按钮实现状态的变化;
总结
作为初学者,能够熟练的完成以上5个步骤就可以了。