欢迎光临散文网 会员登陆 & 注册

odoo16 创建第一个应用插件

2023-08-30 21:50 作者:OdooWizard  | 我要投稿

重写一遍的原因是视频太模糊了,看不清,也不好复制代码;

本章节我们将向大家介绍如何用odoo16创建第一个插件

在此之前,你可以了解扩展的知识:

E-R图

正则表达式

MVC模式

继承

odoo字段类型详解

步骤一:数据结构设计

在经过需求分析→详细设计后,我们得到如下E-R图

学生管理E-R图

步骤二:插件生成

odoo生成一个可以安装的插件只需要一个__manifest__.py文件。

在odoo 16中,__manifest__.py文件是用于描述应用程序的元数据和配置信息的文件。以下是__manifest__.py文件中一些常用参数的说明,所有的参数写成一个字典:

name:  应用程序的名称。

summary: 应用程序的简短描述,通常用于应用商店的列表页面。

description: 应用程序的描述信息,用于在应用商店或其他地方展示。

version: 应用程序的版本号。

category:应用程序的分类。

website: 应用程序的官方网站。

author: 应用程序的开发者或发布者名称。

company:应用程序的公司。

depends: 指定应用程序依赖的odoo模块列表。

license: 应用程序的许可证信息,如GPLv3等。

application:是否为应用程序,如销售是应用程序,销售报表则不是。

installable: 是否可以作为odoo模块安装。通常为True。

auto_install:是否自动安装,例如销售报表依赖销售,则可以设置为如果销售安装后,销售报表自动安装。

这些参数可以根据具体需求进行配置和修改,以满足应用程序的需求和特性。

odoo.conf配置文件我们改两个地方,addons_path和dbfilter

addons_path:我们新增的插件放到ilearning目录下,因此将ilearning目录添加在addons_path中,以逗号隔开;addons_path以odoo-bin所在的目录为参考目录,因此ilearning的相对路径为odoo\ilearning;

dbfilter:是根据正则表达式匹配要显示的数据库,比如student_sys可以匹配student_sys开头的数据库,比如student_sys123,student_sys__等;

odoo.conf修改

运行odoo16,创建一个应用,注意:配置了dbfilter,所以数据库一定要以student_sys开头,我们就直接用student_sys。

创建数据库

应用列表

这样,我们就能看到ilearning下面的jcerp_student_01插件了,只是我们其他插件是写好了的,所以也一并都能够看到。

步骤三:后端模型

后端模型是写在.py文件中的,将后端模型代码放在models中,并通过__init__.py引用models,models中的__init__.py再引用其目录下的.py模型文件,这是一种编程规范,符合MVC模式,早期odoo的.py文件直接放在插件根目录下,从功能上来说也不影响。

MVC模式
插件下的__init__.py引用models

models下的__init__.py引用模型.py文件

按照步骤一我们设计的数据结构,我们继承了models.Model,代码如下:

odoo的字段类型可以参考:odoo字段类型详解

class_archives.py

course_archives.py

grade_archives.py

student_archives.py

步骤四:权限控制

权限文件是放在security的ir.model.access.csv文件中,另外还有security.xml以后再讲。

写法也简单

id:access_模型(_连接)_权限组,例如学生用户权限,access_student_archives_group_user或者access_student_archives_user;

name:可以用模型(.连接),例如学生用户权限,student.archives

model_id:必须是:model_模型(_连接),model_student_archives

group_id:群组,这里我们只需要知道基本用户组是base.group_user

rwcu:读写增删权限

整体的意思就是群组base.group_user对学生具备可读可写可创建可删除的权限,那么如果某个用户赋予了这个群组,那么这个用户就具备了可读可写可创建可删除的权限。

步骤五:前端视图

注意:要把所有的视图文件、权限文件都在__manifest__.py的data中引用!!!

__manifest__.py的data中引用

student_archives_views.xml为例:

菜单视图:从代码来看,比较明了,就是定义了一个学生管理系统,并且在其下又定义了4个子菜单,父子菜单通过parent来关联,顶级菜单没有parent;

name:菜单名称

id:菜单的id,整个系统必须唯一,一般以menu_开始命名;

web_icon:顶级菜单的图标;

sequence:平级菜单的显示顺序;

action:点击菜单触发的动作,顶级菜单也可以指定动作,如果不指定,则默认显示第一个具有action的子菜单对应的动作。如果某一级菜单下所有的子菜单都没有action,则该菜单不显示

action视图:

也称动作视图,是点击菜单后执行的动作,动作的效果是根据action的定义显示对应的视图。

id:整个系统必须唯一,以action_开头,对应的模型是ir.actions.act_window

name:进入界面后,界面显示的名称;

view_mode:该action视图对应有哪些视图,字段较多一般会选择tree及form视图,字段较少时只选择tree视图即可;一般这些视图都需要我们去定义,如果不定义,odoo会根据后端模型自动生成视图。

view视图:

一般来说,我们会定义action中view_mode中的视图与搜索视图;

tree视图:

id:整个系统必须唯一,一般以view_xx_tree命名,对应的model是ir.ui.view

name:tree视图的名称

model:这里的model一定要与后端模型保持一致

arch:tree视图的内容,按照tree>field

form视图:

id:整个系统必须唯一,一般以view_xx__form命名,对应的model是ir.ui.view

name:form视图的名称

model:这里的model一定要与后端模型保持一致

arch:form视图的内容,form>sheet>group>group>field层级,可以自行去掉某一层级观察效果

search视图:

id:整个系统必须唯一,一般以view_xx__search命名,对应的model是ir.ui.view

name:search视图的名称

model:这里的model一定要与后端模型保持一致

arch:search视图中的条件字段,可以是后端模型中的char、selection、对象

class_archives_views.xml

course_archives_views.xml

grade_archives_views.xml

运行效果


odoo16 创建第一个应用插件的评论 (共 条)

分享到微博请遵守国家法律