访问这些辅助记录之一将预取同一模型中的所有辅助记录。...在出现字段的表单视图中,当修改某个给定字段时,将调用该方法。在包含表单中存在的值的伪记录上调用该方法。该记录上的字段赋值将自动返回客户端。...参数 env (Environment) – 警告 新环境将不会从当前环境的数据缓存中受益,因此稍后的数据访问可能会在从数据库重新获取数据时产生额外的延迟。...注解 因为必须重新评估记录规则和访问控制,所以新的记录集将不会从当前环境的数据缓存中受益,因此以后的数据访问可能会在从数据库重新获取时产生额外的延迟。返回的记录集具有与self相同的预取对象。...提供三种不同的机制,以模块化方式扩展模型: 从现有模型创建新模型,向副本中添加新信息,但保留原始模块 扩展其他模块中定义的模型,替换以前的版本 将模型的一些字段委派给它包含的记录 经典继承 当同时使用
--略--> 查看效果 注意: 实践时发现,通过界面点击,访问一些菜单界面时,会在菜单访问URL(参见菜单访问自动生成的URL)中自动添加model,...view_type等参数,也就是说会自动访问模块相关模型,如果此时没有对应模型的访问权限(至少需要 read权限),那么即便拥有对应菜单的访问权限,界面上也看不到对应的菜单,笔者尝试过在浏览器中直接通过菜单链接...模型访问权限(Access Rights,表级别) 当模型中没有定义任何访问权限时,odoo会认为没有任何用户可以访问数据,并在日志中打印: 2022-12-14 09:01:38,994 32508...默认允许的记录规则:如果授予模型访问权限(Access Rights),并且没有规则适用于用户的操作和模型,则授予访问权限 记录规则保存在ir.rule模型表里,我们通过管理ir_rule表中的记录,即可控制记录的访问权限...如果当前用户不在列出的组中,他将无权访问该字段: 将自动从请求的视图中删除受限制的字段 从fields_get()响应中删除受限制的字段 尝试(显式的)读取或写入受限字段会导致访问错误 修改estate
TransientModel类扩展Model并重用其所有现有机制,具有以下特殊性: wizard记录不是永久的;它们在一定时间后自动从数据库中删除。...以下属性皆在hasCheckBoxes 为"true"的情况下起作用。 modelName 点击列表复选框时,需要访问的模型名称,需要配合modelMethod方法使用,缺一不可。...可选 modelMethod 点击列表复选框时,需要调用的模型方法,通过该方法收集列表勾选记录的数据。可选。...> 说明: saveSelectionsToSessionStorage 为"true"则表示点击复选框时,将当前选取的记录存到浏览器sessionStorage中,可选 odoo14\custom\estate...this.recordsSelected = {}; // 存放选取的记录 this.modelName = undefined; // 定义点击列表复选框时需要访问的模型
--此处代码略...--> 说明:'group_by': '分组字段名称' 用于视图对象按钮,传递数据给模型方法 模型设计 #!...> 说明:context属性值中的字典的键值如果为模型中定义的字段名称,则该字段名称必须以元素的形式,出现在模型对应的视图(即不能是内联视图,比如内联Tree列表)中,否则会出现类似错误提示...(即加载内联Tree视图)时,会自动调用estate.property模型的read方法,服务端控制台输出如下: {'lang': 'en_US', 'tz': 'Europe/Brussels', '...为可编辑列表视图字段搜索添加查询过滤条件](odoo 为可编辑列表视图字段搜索添加查询过滤条件.md) 用于记录集,传递数据给模型方法 模型设计 #!...create或者write方法,调用该方法前修改上下文,然后在方法中通过self.env.context获取上下文中的目标key值,进而实现目标需求 res = super(EstatePropertyTag
最重要的属性为 _name,该属性定义了model在odoo系统中的属性。...api, SUPERUSER_ID 练习 创建estate_property表的最小化模型 在 odoo14/custom/estate/models/estate_property.py 中定义model...启动过程中可以看到类似以下告警日志: ... 2022-12-14 06:46:02,771 23792 WARNING odoo odoo.models: The model estate.property...有两大类领域字段:‘简单’字段--直接存储在模型表中的原子值,形如Boolean, Float, Char, Text, Date 和Selection, ‘关系型’ 字段--连接相同或者不同模型的记录...创建记录时必须拥有默认值或给定的值。
Odoo自带内置引擎:QWeb模板。QWeb是Odoo使用的主要模板引擎。它是一个XML模板引擎,主要用于生成HTML片段和页面。 你可能已经在Odoo见过 看板,其中的记录以卡片状结构显示。...目标: 本节结束时创建一个房产的看板视图 在我们的地产应用程序中,我们希望添加一个看板视图来显示我们的房产。看板视图是标准的Odoo视图(如表单和列表视图),但其结构更灵活。...在本例中,它用于将模板的name设置为kanban-box :oe_kanban_global_click让可点击,以打开记录...在上面的示例中,字段name被添加到元素中,但state在它之外。当我们需要字段的值但不想在视图中显示它时,可以将其添加到元素之外。...注意:best price仅在收到报价时展示,而selling price仅在接受报价时展示 修改odoo14\custom\estate\views\estate_property_views.xml
数据文件中的内容也是在模块安装或者更新时按序加载。因此,对CSV文件所做的所有说明对XML文件都适用。...注解: 当程序很注重性能时,CSV格式优先于XML格式。这是因为,在odoo中加载CSV文件比加载XML文件更快。...odoo中,用户接口(action,菜单和视图)大部分是通过创建和组装XML文件中的记录来定义的。常见的模式为 菜单> action > 视图。为了访问记录,用户在几个菜单级中导航。...最深层是触发打开记录列表的action。 操作(Actions) 参考: 主题相关文档可以查看 Actions....Odoo有许多微调方式,但通常第一步是确保: 某些字段有默认值 某些字段只读 当记录重复时,某些字段不能被拷贝 在我们的房产业务案例中,我们希望:: 售价只读(往后将自动填充) 当记录重复时,可用日期和售价不能被拷贝
(以及可能的特定视图)(以及可能特定的模型记录)。...如果未提供id,则客户端应获取所请求模型的指定类型的默认视图(这由 fields_view_get()自动完成)。列表的第一种类型是默认视图类型,在执行操作时默认打开。...默认获取模型的默认搜索视图。 target (可选) 视图是否应在主内容区域(current)、以全屏模式(fullscreen)或对话框/弹出窗口(new)中打开。...在web客户端中默认为80 name(可选),action名称,界面显示时拼接到当前面包屑导航(现有导航面包屑 / name值)。...中的每个未填充类型,追加(False,type) 应用实践举例 在estate模块的estate.property模型的表单视图中,为Action添加菜单"选取offers",如下: !
实践环境 Odoo 14.0-20221212 (Community Edition) 需求描述 如图,给表单新增一个类似聊天的窗口,当记录一些表单活动(本例为自动记录当前记录状态变化) 需求实现 模型定义...odoo14\custom\estate\models\estate_property.py 需要继承mail.thread模型,并为需要追踪的字段设置tracking属性,并设置属性值为真值 #!...,该模型类型为models.AbstractModel,其定义文件为 odoo14\odoo\addons\mail\models\mail_thread.py,其字段命名均以message_开头...tracking 该属性为True或数字时,打开针对该属性所属字段的修改日志--当所属字段内容发生变化时,系统会将该字段变化前后的值写入日志中,这个数字的大小影响变更日志在日志中的排序。...,类型为models.AbstractModel,定义在文件 odoo14\odoo\addons\mail\models\mail_activity.py,其字段命名均以activity_,对应的,模型定义中
安全-简介 前一章中我们已经创建了第一个打算用于存储业务数据的表。在odoo这样的一个商业应用中,第一个考虑的问题就是谁(Odoo 用户(或者组用户))可以访问数据。...Data Files (CSV) Odoo是一个高度数据驱动的系统。虽然通过Python代码定制行为,但是模块的部分值在加载时设置的数据中。...当模型中没有定义任何访问权限时,odoo会认为没有任何用户可以访问数据,并在日志中打印: 2022-12-14 09:01:38,994 32508 WARNING odoo odoo.modules.loading...ir.model.access 模型记录。...这些访问权限通常定义在一个名为ir.model.access.csv的CSV文件中。
本章目标 在房地产模型中,自动计算总的面积和最佳报价 预期效果: 在地产报价模型中,自动计算合法的日期且可被更新 在我们的房地产模块中,我们定义了生活区和花园区。...到目前为止,字段已直接存储在数据库中并直接从数据库中检索。字段也可以被计算。在这种情况下,不会从数据库中检索字段的值,而是通过调用模型的方法来动态计算的字段的值。...在self 上迭代,会一个接一个的生成记录,其中每个记录本身是长度为1的集合。可以使用.(比如 record.name)访问单条记录的字段或者给字段赋值。...提示: create_date 仅在记录创建时被填充,因此需要一个回退,防止创建时的奔溃 在表单和列表视图中添加字段,正如本章目标中显示的第二个动画中的一样。...永远不要使用onchange将业务逻辑添加到模型中。这是一个非常糟糕的想法,因为在以编程方式创建记录时不会自动触发onchanges;它们仅在表单视图中触发。
例如,为了在我们的测试模型中定义到 res.partner的连接,我们可以这样写: partner_id = fields.Many2one("res.partner", string="Partner...买家可以是任何个人,然而,销售人员必须是房产机构的员工(即odoo用户)。 在odoo中,有两种我们经常引用的两种模型: res.partner: 一个partner为一个物理实体或者法人实体。...例如,为了在我们的测试模型中定义到 account.tax的链接,我们可以这样写: tax_ids = fields.Many2many("account.tax", string="Taxes") 按约定...首先,我们不需要所有模型的操作或菜单。某些模型只能通过另一个模型访问。在我们的练习中就是这样的:报价总是通过房产获得的。 其次,尽管property_id字段是必需的,但我们没有将其包含在视图中。...当我们通过one2many字段创建记录时,为了方便,会自动填充相应的many2one 添加odoo14\custom\estate\models\estate_property_offer.py #!
选择字段 在上一篇教程中,我们已经创建好了待办事项的模型,但是只是添加了「描述」和「已完成?」两个字段,这肯定是不能满足我们的需求的。...在上一篇教程中我们提到过,在对模型进行改动之后,需要对模块进行升级才能看到变更后的样子,除了从应用列表中找到模块进行升级外,我们还可以在命令行中给 Odoo 的启动命令加上参数 -u todo 指定升级...这个需求跟时间有关,并且时间是流动(一直在变化)的,所以我们应该要有一个方法在用户每次打开待办事项之前,把这个结果计算好,并且反馈给用户,还好 Odoo 的 ORM 已经为我们实现了相关的机制——计算字段...PS: 这里我们对 deadline 进行了判断,是因为如果没有设置截止时间,又或者是在新建代办事项时,这里的 deadline 会是一个布尔值,是不能和时间字符串进行比较的。...这篇教程中的代码同样会更新在我的 GitHub 仓库中。
更新您的软件包: sudo apt update && sudo apt upgrade 为Odoo 配置UFW防火墙 在安装Odoo之前,我们将设置一些基本的防火墙规则,以允许SSH连接和访问Odoo...db_port = False- Odoo使用PostgreSQL默认端口5432,只有在使用自定义PostgreSQL设置时才更改此设置。...对于正常安装,您可以跳过此行,并且此Odoo实例将默认连接到端口8069。 注意 如配置日志部分中所述,在Ubuntu 16.04中有很多Odoo日志记录选项。...测试Odoo 打开一个新的浏览器窗口并访问以下地址: http://:8069 如果一切正常,将出现类似于此的屏幕: 恭喜,现在您可以创建第一个数据库并开始使用...从源代码下载新代码: cd /opt/odoo sudo git fetch origin 10.0 将更改应用于存储库: sudo git reset --hard origin/10.0 访问您的新系统
例如,在我们的房地产场景中,我们希望在常规用户视图中直接显示销售人员的财产列表。...第一继承机制允许模块通过以下方式修改在另一个模块中定义的模型的行为: 向模型添加字段 覆盖模型中字段的定义 给模型添加约束 给模型添加方法 重写模型中的现有方法 第二种继承机制...(委托)允许将模型的每个记录链接到父模型的记录,并提供对该父记录的字段的透明访问。...odoo中,第一种机制最常用。在我们的例子中,我们希望向现有模型添加一个字段,这意味着我们将使用第一种机制。...xpath的主体作为同级元素 after 在匹配的元素之后插入xpaths的主体,作为同级元素 attributes 使用xpath主体中的特定属性元素更改匹配元素的属性 当匹配单个元素时,
《Odoo10 Development Essentials》Chapter5(p106)中介绍了Odoo中分层关系的建立。 代码如下 在上面的代码中。 使用字段来关联上层记录。...使用和字段来进行记录所属层级,当时看书的时候对这些代码不是很理解,只是知道这样做能够提高层级关系数据模型查询数据记录的效率。...简单原理 查询分层结构记录时,一般的想到的方法是从根目录开始,对每个子目录进行递归查询.然后才能得出具体的分层结构。...(如递归查询文件夹文件) Odoo中为了提高层次结构(树状结构)查询效率,每一条层级数据记录添加跟字段. 假设A是B的上级对象。那么存在这样的逻辑关系。...Odoo 应用 我们用Odoo11的product模块作为演示 在文件中.看到产品目录(ProductCategory类.15行起)的代码 在Odoo11的演示数据中,产品的目录结构一共有6个 我们查询下数据库中的数据
实践环境 Odoo 14.0-20221212 (Community Edition) 需求描述 如下图,列表网仓记录详情页面(form视图),编辑内联视图中的货主记录,为货主和仓库字段搜索,添加过滤条件...,具体如下: 添加、编辑货主时,下拉列表中只展示选取和当网仓记录所属公司关联的货主,点击搜索更多,仅展示和当前网仓记录所属公司关联的货主 添加、编辑货主时,下拉列表中只展示选取和当网仓记录关联的仓库(到...“仓库” Tab页中添加的仓库),点击搜索更多,仅展示和当前网仓记录关联的仓库。...--此处代码已省略--> 修改ResPartner,重写模型name_search(编辑货主字段,弹出下拉列表时,会请求该模型函数),search_read(编辑货主字段...,点击下拉列表时 搜索更多打开界面时,会请求该模型函数) 提示:分析OmsNetworkLine模型定义可知道,货主字段(partner_id)为多对一字段,关联ResPartner 模型 class
在上一章中已经看到,odoo能够为给定模型生成默认视图。实际上,默认视图对于业务应用程序来说是不可接受的。相反,我们至少应该以逻辑的方式组织各个字段。 视图是在带有操作和菜单的XML文件中定义的。...在我们的estate模块中,我们需要以逻辑方式组织字段: 在列表(树)视图中,我们希望显示的不仅仅是名称。 在表单视图中,应该对字段进行分组。 在搜索视图中,我们必须能够搜索的不仅仅是名称。...练习 -- 添加自定义表单视图 在合适的XML文件中为estate.property 定义视图 为了避免每次修改视图时都重新启动服务器,可以在启动服务器时添加--dev-xml,以便只刷新页面就可以查看视图修改...在odoo中,domain对记录上的条件进行编码:domain是用于选择模型记录子集的条件列表。每个条件都是一个包含字段名、运算符和值的三元组。...运算顺序 以二元运算为例,从左至右读入表达式,遇到一个操作符后跟随两个操作数时,则计算之,然后将结果作为操作数替换这个操作符和两个操作数;重复此步骤,直至所有操作符处理完毕。
win32' and python_version < '3.7' greenlet==2.0.1 ; python_version < '3.7' 以解决依赖冲突问题 依次、轮换执行以下安装命令(注意:在虚拟运行环境中执行...安装PostgreSQL exe安装比较简单,中途按要求选择合理的安装路径,数据存储路径,按要求输入并记录postgres用户密码,其它保持默认,下一步...下一步即可。...如果安装配置没问题,则启动时可以看到类似如下日志: 2022-12-13 11:20:24,989 21476 INFO ?...模块之间用逗号分隔 -u 运行服务前,更新某些模块,模块之间用逗号分隔,注意配合-d使用 小技巧 The --limit-time-cpu and --limit-time-real 参数可以用于在调试源码时...站点访问验证 浏览器中打开http://localhost:8069/web/login,成功的话,可以看到如下界面 输入默认登录账号/密码:admin/admin,点击登录,可以看到如下界面 Pycharm
通过启用SCL,您将可以访问核心存储库中不提供的较新版本的编程语言和服务。...Odoo的推荐版本0.12.1在官方CentOS 7存储库中不可用。.../odoo 由于这里下载慢的问题,从本地直接上传 启用软件集合,以便我们可以访问python 3.6二进制文件: [odoo12@localhost ~]$ scl enable rh-python36.../odoo12/odoo/debian/odoo.conf /etc/odoo12.conf 接下来,打开文本编辑器并创建以下配置文件: [root@localhost /]# vi /etc/odoo12...打开您的文本编辑器,并odoo12.service在/etc/systemd/system/目录内创建一个文件: [root@localhost /]# vi /etc/systemd/system/odoo12
领取专属 10元无门槛券
手把手带您无忧上云