ODOO学习笔记(7):模块化架构(按需安装)
一、Odoo模块化架构概述
Odoo是一个功能强大的企业资源规划(ERP)系统,其模块化架构是它的核心优势之一。这种架构允许系统通过添加、移除或修改不同的模块来灵活地适应企业的各种业务需求。

- 核心模块与自定义模块:
- Odoo本身带有一系列核心模块,涵盖了基本的业务功能,如销售、采购、库存、会计等。这些核心模块提供了标准化的业务流程和数据结构,构成了系统的基础框架。
- 同时,用户可以根据自己企业特有的业务流程和需求创建自定义模块。自定义模块可以与核心模块无缝集成,扩展系统的功能。

二、模块的结构组成

-
模型(Models)
- 模型是Odoo模块的核心部分,用于定义数据结构。它类似于数据库中的表结构,定义了业务对象的属性和关系。
- 例如,在销售模块中,有“销售订单”模型。这个模型可能包含订单日期、客户信息、产品明细、销售金额等属性。模型之间也可以建立关联,如“销售订单”模型与“客户”模型、“产品”模型存在多对一的关系(一个客户可以有多个销售订单,一个产品可以出现在多个销售订单中)。
- 通过继承,模型可以扩展或修改已有模型的功能。比如,可以创建一个自定义的销售订单模型,继承自标准的销售订单模型,添加新的字段来满足企业特殊的订单信息需求,如特殊的订单备注字段用于记录内部审批意见。
-
视图(Views)
- 视图用于定义用户与模型数据的交互界面。它决定了数据如何展示给用户以及用户如何输入和操作数据。
- 有多种类型的视图,如表单视图(Form View)、列表视图(List View)和看板视图(Kanban View)。
- 表单视图通常用于展示和编辑单个记录的详细信息。例如,在销售订单的表单视图中,用户可以看到销售订单的各个字段,如客户名称、产品明细等,并可以进行修改。列表视图则以表格形式展示多条记录,方便用户进行批量操作和筛选。看板视图适用于对任务或业务流程进行可视化管理,如在项目管理模块中展示项目任务的进度。
-
控制器(Controllers)
- 控制器处理用户与系统之间的交互逻辑。它接收用户的请求,如通过网页浏览器发送的HTTP请求,然后调用相应的模型方法来处理请求,并返回合适的视图给用户。
- 例如,当用户在网页上点击“创建销售订单”按钮时,控制器会接收到这个请求,然后调用销售订单模型的创建方法来生成一个新的空白销售订单记录,并返回销售订单的表单视图给用户,以便用户填写订单信息。
-
数据文件(Data Files)
- 数据文件包含模块初始化和运行所需的初始数据,如默认的配置参数、基础的业务数据(如产品类别、货币类型等)。
- 这些数据可以在模块安装时被加载到系统中。例如,在安装库存模块时,数据文件会将默认的仓库位置、库存计量单位等基本信息加载到数据库中,确保模块能够正常启动和运行。
三、模块之间的交互

- 接口(Interfaces)和依赖关系(Dependencies):
- 模块之间通过定义明确的接口进行交互。一个模块可以提供接口供其他模块调用,也可以依赖其他模块的接口来实现自己的功能。
- 例如,销售模块可能依赖于产品模块的接口来获取产品信息。当创建销售订单时,销售模块通过调用产品模块的接口获取产品的价格、库存等信息,以确保销售订单数据的准确性。
- 模块之间的依赖关系在模块的安装和升级过程中起到关键作用。在安装一个模块时,系统会首先检查它所依赖的其他模块是否已经安装,并按照依赖顺序进行安装。在升级模块时,系统也会考虑依赖关系,确保升级过程不会破坏模块之间的交互和数据完整性。
四、模块的安装与升级

- 安装过程:
- 当安装一个Odoo模块时,系统会首先解析模块的结构,包括模型、视图、控制器和数据文件等部分。然后,它会按照模块定义的依赖关系,先安装依赖的模块。
- 接着,系统会创建模块中定义的数据库表(基于模型),加载初始数据(数据文件),注册视图和控制器,使得模块能够在系统中正常运行。
- 升级过程:
- 在升级模块时,系统会比较旧版本和新版本之间的差异。对于模型,它可能会添加新的字段、修改字段属性或者删除不再需要的字段。对于视图,可能会更新界面布局或添加新的交互功能。
- 系统会尽量以一种平滑的方式进行升级,保留已有的数据,并根据升级脚本对数据进行必要的转换和更新,以适应新的模块结构和功能要求。
相关文章:
ODOO学习笔记(7):模块化架构(按需安装)
一、Odoo模块化架构概述 Odoo是一个功能强大的企业资源规划(ERP)系统,其模块化架构是它的核心优势之一。这种架构允许系统通过添加、移除或修改不同的模块来灵活地适应企业的各种业务需求。 核心模块与自定义模块: Odoo本身带有一…...
Java的dto,和多表的调用
1理论 需求是新增菜品eg:菜名:豆腐脑;口味:甜口,咸口, 菜单表:dish;口味表dish_flavor; 1dto:数据传输对象 新建一个dishDto对象有两个表里的属性 2用到两个表,dish,d…...
时序数据库TimescaleDB安装部署以及常见使用
文章目录 一、时序数据库二、TimescaleDB部署1、repository yum仓库配置2、yum在线安装3、插件配置4、TimescaleDB使用登录pg创建插件使用超表 一、时序数据库 什么是时序数据库?顾名思义,用于处理按照时间变化顺序的数据的数据库即为时序数据库&#x…...
MG算法(英文版)题解
翻译: 考虑一个加法流,其中一个特定项目出现 n^(1/2) 次,并且有 n - n^(1/2) - 1 个其他不同的项目,每个项目出现一次。在应用 Misra-Gries(MG)算法时,应该选择哪个 ε(epsilon&…...
2-UML概念模型测试
1. (单选题, 1.0 分) UML中的关系不包括()。 A. 抽象B. 实现C. 依赖D. 关联 我的答案:A正确答案: A 知识点: UML的构成 1.0分 2. (单选题, 1.0 分) 下列事物不属于UML结构事物的是()。 A. 组件B. 类C. 节点D. 状…...
人工智能(AI)对于电商行业的变革和意义
 参考, x.content content --EXTRACTVALUE(x.Content, //zlxml//document//subdoc[antetypeid"3C38A8DAB01C473A9074A8EDD0B8553"]//utext) 主治医师, --EXTRACTVALUE(x.…...
RK3568平台开发系列讲解(GPIO篇)GPIO的sysfs调试手段
🚀返回专栏总目录 文章目录 一、内核配置二、GPIO sysfs节点介绍三、命令行控制GPIO3.1、sd导出GPIO3.2、设置GPIO方向3.3、GPIO输入电平读取3.4、GPIO输出电平设置四、Linux 应用控制GPIO4.1、控制输出4.2、输入检测4.3、使用 GPIO 中断沉淀、分享、成长,让自己和他人都能有…...
使用 Web Search 插件扩展 GitHub Copilot 问答
GitHub Copilot 是一个由 GitHub 和 OpenAI 合作开发的人工智能代码提示工具。它可以根据上下文提示代码,还可以回答各种技术相关的问题。但是 Copilot 本身不能回答非技术类型的问题。为了扩展 Copilot 的功能,微软发布了一个名为 Web Search 的插件&am…...
workerman的安装与使用
webman是一款基于workerman开发的高性能HTTP服务框架。webman用于替代传统的php-fpm架构,提供超高性能可扩展的HTTP服务。你可以用webman开发网站,也可以开发HTTP接口或者微服务。 除此之外,webman还支持自定义进程,可以做worker…...
QtQuick.Controls 控件介绍(都有哪些type)
这里写目录标题 主要控件 官方示例1. quickcontrols示例示例1 控制controlsSliders滑块bottom与tab 示例2 系统对话框 systemdialogs示例3 仪表盘示例4 uiforms 表格-客户通讯录 2. quickcontrols2示例1 gallery 展示2 flat Style 扁平化 帮助文档 主要控件 Button:…...
Unity导出APK加速与导出失败总结(不定时更新)
APK导出加速 1、修改配置文件: 需要修改的文件位置:编辑器安装路径/Editor/Data/PlaybackEngines/AndroidPlayer/Tools/GradleTemplates 1.1 settingsTemplate.gradle文件修改 直接附上最终效果: pluginManagement {repositories {**ART…...
域名绑定服务器小白教程
域名绑定与 Docker 容器部署指南 1. 获取云服务器公网 IP 登录云服务提供商控制台记录服务器公网 IP(例:123.456.78.90) 2. 配置域名 DNS 解析 登录域名注册商控制台添加 A 记录: 主机记录:类型:A值&am…...
用 Collections.synchronizedSet 创建线程安全的 HashSet
在 Java 中,HashSet 本身并不是线程安全的。如果在多线程环境下使用 HashSet,你需要采取额外的同步措施来保证线程安全。Collections 工具类提供了一种简便的方法来创建线程安全的集合——synchronizedSet 方法。这种方法通过在所有公共方法上添加同步块…...
【深度学习】模型参数冻结:原理、应用与实践
在深度学习领域,模型参数冻结是一种重要的技术手段,它在模型训练和优化过程中有着广泛的应用。本文将详细介绍模型参数冻结的相关概念、应用场景、在代码中的实现方式以及一些实际的案例分析。 一、模型参数冻结的概念 在深度学习模型的训练过程中&…...
数字后端教程之Innovus report_property和get_property使用方法及应用案例
数字IC后端实现Innovus中使用report_property可以报告出各种各样object的属性,主要有cell,net,PG Net,Pin,时钟clock,时序库lib属性,Design属性,timing path,timin arc等…...
JS中console对象内部提供调试方法
console.log() console.log() 是最常用的输出方法,用于将信息输出到浏览器控制台,通常用于普通的调试信息。 用途: 打印普通的消息、变量、对象等。 let user { name: "Alice", age: 25 }; console.log(user); // 输出对象 console.log(&…...
python设计模式
一、单例模式 学习目标:掌握单例模式的作用和写法 可以明显的看出他两是独立的对象,而且是两个完全不同的id 当我们希望是s1和s2是同一个对象,这就是我们所说的单例模式。 最后获得的都是同一个对象,这样就可以避免去重复的创建…...
机器学习 笔记
特征值提取 字典 from sklearn.extaction import DictVectorizer mDictVectorizer(sparseFalse)#sparse是否转换成三元组形式 data[], #传入字典数据 data1model.fit_transform(data) #使用API 英文特征值提取 from sklearn.feature_extraction.text import CountVe…...
江协科技之STM32驱动1.3寸/0.96寸/0.91寸OLED显示屏介绍
目录 编码介绍 ASCII码 汉字编码 取模软件 江协科技OLED库适用器件 SSD1306简介 模块引脚更改 0.91寸OLED适配 模块驱动必备知识 驱动代码 OLED_Font.h OLED.h OLED.c 编码介绍 ASCII码 ASCII码是一套数字到字符的映射标准,它规定了用什么数字表示…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
若依登录用户名和密码加密
/*** 获取公钥:前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...
【若依】框架项目部署笔记
参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作: 压缩包下载:http://download.redis.io/releases 1. 上传压缩包,并进入压缩包所在目录,解压到目标…...
算法—栈系列
一:删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...
