![](https://img-blog.csdnimg.cn/direct/1c0fa4df82c945478590002951b1b818.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
odoo17入门开发教程
文章平均质量分 85
在这个专栏中,我们将从Odoo的基础设置开始,逐步引导您通过Python和XML开发自定义模块,包括创建数据模型、实现业务逻辑、用户界面设计和API集成。无论您是初学者还是有经验的开发者,这些内容都将帮助您提升技能,开发更加强大、高效的Odoo应用。
CodeJourney代码之旅
这个作者很懒,什么都没留下…
展开
-
odoo17开发教程(8):设置界面UI的字段属性
本节目标:在本文末尾,售价(selling price)应为只读值,卧室数量(bedrooms)和可用日期(availability date)应为默认值。此外,在复制记录时,售价和可用日期值不会被复制。原创 2024-03-14 15:13:47 · 862 阅读 · 0 评论 -
odoo17开发教程(5):权限的简单介绍
在之前的文章中,我们创建了第一个用于存储业务数据的表。在 Odoo 这样的商业应用程序中,首先要考虑的问题之一是谁可以访问数据。Odoo 提供了一种安全机制,允许特定用户组访问数据。本章旨在对权限有个最低要求对了解。原创 2024-03-12 14:07:10 · 1574 阅读 · 0 评论 -
odoo17开发教程(22):eval的用法
在 Odoo 中,eval是一个常用于 XML 记录文件中的属性,它允许开发者在 XML 定义中嵌入 Python 表达式,并在 Odoo 模块加载或更新时计算这些表达式的结果。这个功能使得开发者可以在 XML 文件中实现更加动态的行为,比如根据条件设置字段的默认值、动态创建记录的关联或条件判断等。eval。原创 2024-04-22 14:26:01 · 269 阅读 · 0 评论 -
odoo17开发教程(21):数据文件详解
Odoo 以数据为导向,因此模块定义的一个重要部分就是其管理的各种记录的定义:用户界面(菜单和视图)、安全性(访问权限和记录规则)、报告和普通数据都是通过记录定义的。原创 2024-04-19 17:15:40 · 658 阅读 · 0 评论 -
odoo17开发教程(20):odoo js框架里的systray注册表和usermenu注册表详解
系统盘是导航栏右侧的区域,包含各种小型组件,通常显示某种信息(如未读邮件数量)、通知和/或让用户与之互动。系统托盘注册表包含这些系统托盘项的说明,这些说明是带有以下三个键的对象:组件:表示项目的组件类。其根元素应为 标记,否则可能无法正确设置样式。props(可选):应赋予组件的道具isDisplayed(可选):接收 env 并返回布尔值的函数。如果为 true,则显示系统盘项。否则将被删除。原创 2024-04-01 14:38:38 · 472 阅读 · 0 评论 -
odoo17开发教程(19):odoo js框架里的注册表
注册表是(有序的)键/值映射。它们是网络客户端的主要扩展点:Odoo javascript 框架提供的许多功能只需在需要某些对象(如字段、视图、客户端操作或服务)的定义时查找注册表。然后,只需在正确的注册表中添加特定值,即可定制网络客户端。注册表的一个有用功能是维护一组子注册表,这些子注册表通过类别方法获得。如果子注册表还不存在,则会即时创建。网络客户端使用的所有注册表都是从 @web/core/registry 中导出的一个根注册表中获取的。原创 2024-04-01 14:29:45 · 576 阅读 · 0 评论 -
odoo17开发教程(18):patch的用法简介
有时,我们需要自定义用户界面的工作方式。一些受支持的应用程序接口可以满足许多常见需求。例如,所有注册表都是很好的扩展点:字段注册表允许添加/删除专门的字段组件,或者主组件注册表允许添加应始终显示的组件。然而,在某些情况下,这些注册表并不足够。在这种情况下,我们可能需要在原处修改一个对象或一个类。为此,Odoo 提供了实用功能 patch。它主要用于覆盖/更新某些不受自己控制的其他组件/代码的行为。原创 2024-03-29 17:06:16 · 620 阅读 · 0 评论 -
odoo17开发教程(17):美化UI界面
从业务角度来看,我们的房地产模块现在很有意义。我们创建了特定的视图,添加了几个操作按钮和约束条件。不过,我们的用户界面还有些粗糙。我们希望在列表视图中添加一些颜色,并使一些字段和按钮有条件地消失。例如,"已售出 "和 "取消 "按钮应在房产售出或取消时消失,因为此时已不允许更改状态。本章只介绍了视图中的一小部分功能。如需更全面的概述,请阅读参考文档。参考:与本章相关的文档可在和中找到。原创 2024-03-20 21:39:55 · 895 阅读 · 0 评论 -
odoo17开发教程(16):制约因素
上一章 介绍了在模型中添加一些业务逻辑的功能。我们现在可以将按钮链接到业务代码,但如何防止用户输入错误数据呢?例如,在我们的房地产模块中,没有什么可以阻止用户设置负的预期价格。Odoo 提供了两种设置自动验证不变式的方法:Python 约束和 SQL 约束。提示:以下是本篇文章正文内容,下面案例可供参考。原创 2024-03-19 17:46:56 · 705 阅读 · 0 评论 -
odoo17开发教程(15):增加一些动作和按钮
假设有一个模块名为test,并且在这个模块中定义了一个动作(action)。下面是这个假设模块的一个基本目录结构,以及如何在这个结构中定义和引用test/├── views/└── data/test是模块名字,也是命名空间,为了防止action名字和其他模块冲突。原创 2024-03-19 11:22:44 · 1203 阅读 · 0 评论 -
odoo17开发教程(14):Computed Fields And Onchanges
模型之间的关系是任何 Odoo 模块的关键组成部分。任何业务案例的建模都离不开它们。然而,我们可能希望在给定模型内的字段之间建立联系。有时,一个字段的值由其他字段的值决定,有时,我们希望帮助用户输入数据。计算字段和 onchanges 概念支持这些情况。虽然本章在技术上并不复杂,但这两个概念的语义非常重要。这也是我们第一次编写 Python 逻辑。到目前为止,除了类定义和字段声明之外,我们还没有写过其他东西。原创 2024-03-18 15:32:17 · 856 阅读 · 0 评论 -
odoo17开发教程(13):模型之间的关系-One2many一对多
在房地产模块中,我们要定义房产出价的概念。房产出价是潜在买家向卖家提出的金额。出价可以低于或高于预期价格。一个出价适用于一处房产,但同一房产可以有多个出价。many2one 的概念再次出现。不过,在这种情况下,我们希望显示给定房产的出价列表,因此我们将使用 one2many 概念。one2many 是 many2one 的倒数。例如,我们在测试模型中通过 partner_id 字段定义了一个指向 res.partner 模型的链接。第一个参数称为 comodel,第二个参数是我们要反向关系的字段。原创 2024-03-18 10:30:00 · 620 阅读 · 0 评论 -
odoo17开发教程(12):模型之间的关系-多对多many2many
在介绍多对多关系之前,我们先补上上一篇文章缺失的一部分代码在房地产模块中,我们仍然缺少关于房产的两项信息:买方partner和销售人员salesperson。买方可以是任何个人,但另一方面,销售人员必须是房地产公司的员工(即 Odoo 用户)。在 Odoo 中,我们有两个模型model我们是经常用到的:res.partner:合作伙伴是一个物理或法律实体。它可以是公司、个人,甚至是一个联系地址。res.users:系统用户。用户可以是 "内部 "用户,即他们可以访问 Odoo 后台。原创 2024-03-17 21:51:59 · 896 阅读 · 0 评论 -
odoo17开发教程(11):模型之间的关系-多对一
本文将介绍odoo模型里面的多对一关系关系,many2one。文章首先解释了多对一(Many2one)关系的概念和重要性。多对一关系是指一个记录字段(属性)链接到另一个模型(例如,房产类型)的单个记录。这种关系使得可以将同一类型的标签应用于多个属性,从而简化了属性的分类和管理。例如,通过many2one关系,可以轻松地将多个房产关联到一个房产类型上,如将多个房产标记为“住宅”。接下来,文章通过具体代码示例介绍了如何在Odoo模型中实现这一功能。首先,展示了如何创建模型,并为其添加了一个必需的name字段。原创 2024-03-16 10:44:56 · 721 阅读 · 0 评论 -
odoo17开发教程(10):自定义搜索
odoo自定义搜素,详细介绍了如何添加过滤条件,domain,filter知识原创 2024-03-15 14:29:47 · 807 阅读 · 0 评论 -
odoo17开发教程(9):自定义视图
我们在前一章中看到,Odoo 能够为给定模型生成默认视图。实际上,默认视图对于业务应用程序来说是绝对不可接受的。相反,我们至少应该以合理的方式组织各个字段。视图在 XML 文件中定义,包含操作和菜单。它们是 ir.ui.view 模型的实例。原创 2024-03-14 21:50:50 · 703 阅读 · 0 评论 -
odoo17开发教程(7):用户界面UI的交互-菜单
菜单 test_model_menu_action 与操作 test_model_action 相连,而操作 test_model_action 与模型 test_model 相连。为了减少声明菜单(ir.ui.menu)并将其连接到相应操作的复杂性,我们可以使用 快捷方式。定义结构的最简单方法是在 XML 文件中创建结构。为我们的 estate.property 动作创建3层的菜单。重启你的容器,刷新浏览器,应该能够看到你刚刚定义的菜单啦!下图分别是1级菜单,2,3级菜单。原创 2024-03-13 22:10:34 · 781 阅读 · 0 评论 -
odoo17开发教程(6):用户界面UI的交互-创建Action
前面的文章中我们已经创建了新模型及其相应的访问权限,是时候与用户界面进行交互了。原创 2024-03-13 21:32:31 · 867 阅读 · 1 评论 -
odoo17开发教程(4):模块module和model中的字段类型
在odoo中创建自定义的表(model)和字段原创 2024-03-11 17:22:47 · 1196 阅读 · 0 评论 -
odoo17开发教程(3):详解__manifest__.py文件
"Manifest"这个词在计算机和软件工程的上下文中通常指的是一份包含有关软件包、应用程序或模块等的元数据的文件。Odoo的manifest文件是一个Python字典,用于描述Odoo模块的元数据,包括模块的名称、版本、依赖关系、数据文件等。在日常使用中,“manifest”作为名词时,常常指的是一个清单或者详细列表,记录了货物、乘客名单或其他项目的详细信息,尤其是在运输领域中,如船只或飞机的货物清单。这个文件非常的重要,是模块的核心,请开发者有一个基本的了解。后面文章会详细介绍里面用到的字段。原创 2024-03-10 14:54:27 · 492 阅读 · 0 评论 -
odoo17开发入门教程(2):创建一个新的模块module
使用docker安装开发环境,再之前的文章中已经讲过了。下面正式进入odoo的开发之旅。本章的目的是为创建一个全新的Odoo模块奠定基础。我们将从头开始,以最小的需求让我们的模块被Odoo识别。在接下来的章节中,我们将逐步添加功能,构建一个现实的商业案例。原创 2024-03-10 14:42:39 · 1059 阅读 · 0 评论 -
如何使用Docker安装Odoo 17
本文将指导你如何使用Docker和Docker Compose来安装和配置Odoo 17开发环境,确保你可以轻松地部署和管理你的Odoo实例。原创 2024-03-09 16:34:42 · 1464 阅读 · 0 评论 -
odoo17开发入门教程(1)了解架构
Odoo 遵循多层架构,这意味着表现层、业务逻辑层和数据存储层是分开的。更具体地说,它采用了三层架构:表现层是 HTML5、JavaScript 和 CSS 的组合。逻辑层完全用 Python 编写,而数据层仅支持 PostgreSQL 作为关系数据库管理系统(RDBMS)。根据你的模块范围,Odoo 开发可以在这些层中的任何一个进行。因此,在进一步操作之前,如果你对这些主题不是很熟悉,最好回顾一下知识。为了进行这个教程,你需要具备 HTML 的基本知识和 Python 的中级知识。原创 2024-03-09 16:58:21 · 723 阅读 · 1 评论