本章节我们将向大家介绍用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个步骤就可以了。

推荐内容