在上一章中已经看到,odoo能够为给定模型生成默认视图。实际上,默认视图对于业务应用程序来说是不可接受的。相反,我们至少应该以逻辑的方式组织各个字段。 视图是在带有操作和菜单的XML文件中定义的。...它们是ir.ui.view model的实例。 在我们的estate模块中,我们需要以逻辑方式组织字段: 在列表(树)视图中,我们希望显示的不仅仅是名称。 在表单视图中,应该对字段进行分组。...在自定义搜索视图中添加用户可能过滤的字段是非常常见的。 搜索视图还可以包含元素,这些元素充当预定义搜索的开关。...domain 引用: 本主题相关文档可参考 Search domains. 在odoo中,domain对记录上的条件进行编码:domain是用于选择模型记录子集的条件列表。...每个条件都是一个包含字段名、运算符和值的三元组。如果指定字段满足作用于值的运算符的条件,则记录满足条件。
例如,在我们的房地产场景中,我们希望在常规用户视图中直接显示销售人员的财产列表。...,提示如下: 模块继承(Model Inheritance) 引用: 查看主题相关文档继承和扩展 我们希望在“Settings/Users & Companies/Users”表单视图中直接显示与销售人员关联的房产列表...odoo中,第一种机制最常用。在我们的例子中,我们希望向现有模型添加一个字段,这意味着我们将使用第一种机制。...目标: 在用户表单视图中显示与销售人员关联的avaliable房产列表其用户表单视图 Odoo提供了视图继承,其中子“扩展”视图应用于根视图之上,而不是就地修改现有视图(通过重写它们)。...这些扩展既可以添加内容,也可以从父视图中删除内容。 扩展视图使用inherit_id字段引用其父视图。
-> Users & Companies -> Groups),并为用户分配不同的用户组,及设置相关权限(菜单权限,视图权限,访问权限,记录规则) 此外,为了更方便的管理用户组,odoo还支持对用户组...可以利用该特性实现隐藏对象需求,比如针对一些常规下不需要显示的特殊字段,为其设置属性groups = "base.group_no_one",可以实现在非Debug模式下隐藏字段在视图中的显示。...如果当前用户不在列出的组中,他将无权访问该字段: 将自动从请求的视图中删除受限制的字段 从fields_get()响应中删除受限制的字段 尝试(显式的)读取或写入受限字段会导致访问错误 修改estate...注意:通过为当前视图中目标字段添加groups属性实现的权限控制仅作用于当前视图,如果希望当前视图模型(Model)的所有视图中,对该字段实现统一的权限控制话,需要在模型定义中,为目标字段添加groups...(参考网络资料,未实践验证) 按钮权限(按钮级别) 类似字段权限控制,仅需在在对应视图中,为目标按钮元素,添加groups属性即可。
计算的字段和变更(Computed Fields And Onchanges) 模型之间的关系是任何Odoo模块的关键组成部分。它们对于任何业务案例的建模都是必要的。...方法设置字段的相关性。...提示: create_date 仅在记录创建时被填充,因此需要一个回退,防止创建时的奔溃 在表单和列表视图中添加字段,正如本章目标中显示的第二个动画中的一样。...为了实现这一点,我们定义了一个方法,其中self表示表单视图中的记录,并用 onchange()修饰该方法,以指明它由哪个字段触发。...同时,需要注意的是,不要循环遍历 self,因为该方法在表单视图中触发,self总是代表单条记录。
本文主要介绍如何在腾讯云的环境下,通过简单的步骤,快速搭建一个 ODOO 的站点。...ODOO 任务目标:安装ODOO组件,完成系统和数据库相关配置,启动服务 安装ODOO组件 yum-config-manager --add-repo=https://nightly.odoo.com/...9.0/nightly/rpm/odoo.repo yum install -y odoo 注意,本文以CentOS 7系统为例,对于其它系统,详细的安装指引可以参考官方文档。...& 任务四:初始化ODOO配置 任务目标:通过浏览器访问ODOO,初始化管理数据库,进入主页面 访问:http://:8069/,输入相关参数,完成初始化数据库的工作。...同时可以通过查看/data/odoo/log/odoo.log文件浏览系统日志 初始化结束,页面会自动跳转到应用页面,如下: 这样一个基本的ODOO框架就搭建完成。 参考:Odoo 文档
参考: 本主题相关文档可查阅 Many2one 在我们的房地产模块中,我们想定义房地产类型的概念,例如,房屋或公寓。...练习2 会用上述提到的两种常用model添加买家和销售人员到estate.property模块。将它们添加到form视图中新tab页面。 销售人员的默认值必须是当前用户。买家不能被复制。...many2many是一种双向多重关系:一侧的任何记录都可以与另一侧的任何数量的记录相关。...首先,我们不需要所有模型的操作或菜单。某些模型只能通过另一个模型访问。在我们的练习中就是这样的:报价总是通过房产获得的。 其次,尽管property_id字段是必需的,但我们没有将其包含在视图中。...odoo如何知道我们的报价与哪个房产相关?这就是使用odoo框架的一部分魔力:有时候事情是隐式定义的。
_fold_name= 'fold' 用于确定看板视图中折叠组的字段 AbstractModel odoo.models.AbstractModel[源代码] odoo.models.BaseModel...这意味着这些inverse字段的值(触发inverse方法的值除外)可能不会给出正确的值,这可能会破坏inverse方法的预期行为 相关字段(Related fields) 计算字段的一种特殊情况是相关...这意味着视图中不存在的字段在创建记录期间不会触发调用。...odoo.api.model(method)[源代码] 修饰一个record-style的方法,其中self是一个空记录集,但其内容不相关,只有模型相关,可以理解为不会创建对应数据库记录的模型对象。...使用[]表示匹配所有 fields (list) – 对象上指定的列表视图中存在的字段列表。
《Odoo10 Development Essentials》Chapter5(p106)中介绍了Odoo中分层关系的建立。 代码如下 在上面的代码中。 使用字段来关联上层记录。...使用和字段来进行记录所属层级,当时看书的时候对这些代码不是很理解,只是知道这样做能够提高层级关系数据模型查询数据记录的效率。...(如递归查询文件夹文件) Odoo中为了提高层次结构(树状结构)查询效率,每一条层级数据记录添加跟字段. 假设A是B的上级对象。那么存在这样的逻辑关系。...画个图来理解下 可以看到,图中的B属于A的,清楚的表示了A,B的层级从属关系。...凡事皆有两面,这种存储特性会在数据库中添加多余的字段。其实是以空间换时间。
模型和基本字段 在上一章的末尾,我们创建一个odoo模块。然而,此时它仍然是一个空壳,不允许我们存储任何数据。...在我们的房地产模块中,我们希望将与房地产相关的信息(名称(name)、描述(description)、价格(price)、居住面积(living area)…)存储在数据库中。...Fields) 参考: 该主题相关文档可参考 Fields API 字段用于定义model可以存储啥及在哪里存储。...有些属性是所有字段都拥有的,最常见的几个属性如下: string (str, default: 字段名称) UI上显示为字段的label (用户可见)....自动创建的字段(Automatic Fields) 参考: 该话题相关文档可参考 Automatic fields. odoo会在所有model(当然,也可以配置禁止自动创建某些字段)中创建少数字段。
1.Dbfilter配置 Odoo是一个多租户系统:一个Odoo系统可以运行并服务于多个数据库实例。它也是高度可定制的,定制(从加载的模块开始)取决于“当前数据库”。 ...www.mycompany.com或mycompany.co.uk,则将显示数据库“mycompany”,而不是www2.mycompany.com或helpdesk.mycompany.com。...** **如果希望Odoo和PostgreSQL在同一台计算机上执行,UNIX套接字是可以的,并且在没有提供主机时是默认的,但是如果希望Odoo和PostgreSQL在不同的计算机上执行,则需要侦听网络接口...工作进程数量计算 数量规则:(#CPU * 2) + 1 Cron工作者需要CPU 1个工作进程~=6个并发用户 内存大小计算 我们认为20%的请求是繁重请求,而80%是简单请求 一个繁重的工作,当所有的计算字段都设计好了...这样做时,您需要将更多的http头转发给Odoo,并在Odoo配置中激活代理模式,让Odoo读取这些头。
QWeb简史 到目前为止,我们的房地产模块的界面设计相当有限。构建列表视图很简单,因为只需要字段列表。...Odoo自带内置引擎:QWeb模板。QWeb是Odoo使用的主要模板引擎。它是一个XML模板引擎,主要用于生成HTML片段和页面。 你可能已经在Odoo见过 看板,其中的记录以卡片状结构显示。...:这向视图中添加name字段。...练习--制作一个最小的看版视图 根据上述提供的简单例子,为房产创建一个最小化的看板视图。唯一展示的字段为name....在上面的示例中,字段name被添加到元素中,但state在它之外。当我们需要字段的值但不想在视图中显示它时,可以将其添加到元素之外。
在这篇教程里我们将会了解到 Odoo 模型里的一些其他类型的字段和特殊机制,而我依然会继续带领大家一起完善我们的 Todo 应用,不断地往里面添加一些新的功能特性,让它看起来更丰满也更实用一些。.../odoo-bin --addons-path=addons,.....这个需求跟时间有关,并且时间是流动(一直在变化)的,所以我们应该要有一个方法在用户每次打开待办事项之前,把这个结果计算好,并且反馈给用户,还好 Odoo 的 ORM 已经为我们实现了相关的机制——计算字段...实际上获取当前时间用的也是这个方法,只不过 Odoo 的 ORM 替我们封装了一层,fields.Datetime.now() 是类 Datetime 的静态方法: # fields.py class... 在视图中我们把
、过滤条件 视图定义 为设置action打开的tree列表视图,添加默认搜索,搜索条件为 state字段值等于True 图中定义的、元素的name属性值 content 如果fieldName为搜索字段的name属性值,那么...--此处代码略...--> odoo> 说明:'group_by': '分组字段名称' 用于视图对象按钮,传递数据给模型方法 模型设计 #!...> 说明:context属性值中的字典的键值如果为模型中定义的字段名称,则该字段名称必须以元素的形式,出现在模型对应的视图(即不能是内联视图,比如内联Tree列表)中,否则会出现类似错误提示...为可编辑列表视图字段搜索添加查询过滤条件](odoo 为可编辑列表视图字段搜索添加查询过滤条件.md) 用于记录集,传递数据给模型方法 模型设计 #!
实践环境 Odoo 14.0-20221212 (Community Edition) 需求描述 如下图,列表网仓记录详情页面(form视图),编辑内联视图中的货主记录,为货主和仓库字段搜索,添加过滤条件...“仓库” Tab页中添加的仓库),点击搜索更多,仅展示和当前网仓记录关联的仓库。...> odoo> odoo> odoo> 修改ResPartner,重写模型name_search(编辑货主字段,弹出下拉列表时,会请求该模型函数),search_read(编辑货主字段
最深层是触发打开记录列表的action。 操作(Actions) 参考: 主题相关文档可以查看 Actions....Odoo有许多微调方式,但通常第一步是确保: 某些字段有默认值 某些字段只读 当记录重复时,某些字段不能被拷贝 在我们的房产业务案例中,我们希望:: 售价只读(往后将自动填充) 当记录重复时,可用日期和售价不能被拷贝...参考: 主题相关文档可参考 保留字段名称. odoo为预定义行为保留了一些字段名称。...当需要相关行为时,需要在模型中定义这些保留字段。 练习 -- 添加active字段 添加一个 active 字段到estate.property 模型。...预期效果可参考该动画链接:https://www.odoo.com/documentation/14.0/zh_CN/_images/inactive.gif 注意,已存在的记录的active字段默认值为
例如,在我们的房地产模块中,没有什么可以阻止用户设置负预期价格。 odoo提供了两种设置自动验证恒定式的方法:Python约束 and SQL约束。...SQL 参考:与此主题相关的文档可以查看 Models 和PostgreSQL文档 我们通过模型属性_sql_constraints来定义SQL约束,该属性被赋值为一个包含三元组(name, sql_definition...可能会弹出类似以下内容的错误消息: ERROR rd-demo odoo.schema: Table 'estate_property_offer': unable to add constraint...Python约束定义为用 constrains()修饰的方法,并在记录集上调用。修饰符指定约束中涉及哪些字段。当修改这些字段中的任何字段时,将自动计算约束。...如果不满足该方法的恒定式,则该方法将引发异常: from odoo.exceptions import ValidationError ...
环境 odoo-14.0.post20221212.tar Actions(动作) action定义系统响应用户操作的行为:登录、操作按钮、选择发票等… action可以存储在数据库中,也可以作为字典直接返回...所有Action都有两个强制属性: type 当前Action的类别,决定可以使用哪些字段以及如何解释action name action的名称,在客户端的界面中显示对action的简短用户可读描述...包含字段: res_model action触发的要显示的视图关联的模型 views (view_id,view_type)对的列表。...highlight=do_action#the-action-manager 在数据库window action中,操作有几个不同的字段,这些字段应被客户端忽略,主要用于组成view列表 view_mode...中的每个未填充类型,追加(False,type) 应用实践举例 在estate模块的estate.property模型的表单视图中,为Action添加菜单"选取offers",如下: !
实践环境 Odoo 14.0-20221212 (Community Edition) 需求描述 如下图(非实际项目界面截图,仅用于介绍本文主题),打开记录详情页(form视图),点击某个按钮(图中的"...wizard可以通过关系字段(many2one或many2many)引用常规记录或wizard记录,但常规记录不能通过many2one字段引用wizard记录 详细代码 注意:为了更清楚的表达本文主题...binding_model_id和binding_view_types字段,如下: 说明: saveSelectionsToSessionStorage 为"true"则表示点击复选框时,将当前选取的记录存到浏览器sessionStorage中,可选 odoo14\custom\estate...> odoo14\custom\estate\__manifest__.py 加载自定义模板文件,进而实现自定义js文件的加载 #!
odoo菜单定义和修改学习总结 环境 odoo-14.0.post20221212.tar 定义菜单 方式1: 说明: id 菜单外部ID name 如果不指定name,则: 如果为菜单设置了action,则获取action record定义中name字段的值作为菜单name属性的值 如果未设置菜单action... odoo> groups 逗号分隔的res.groups模型的外部ID序列,形如groups="group_account_user,group_account_manager...修改相关菜单属性值为目标值(如果需要的话) 示例:重新定义purchase.menu_purchase_root菜单名称 odoo> ...
我们可以在这里看到,潜在买家可以提供高于或低于预期售价的报价,取决于卖方是否接受报价。 准备插件目录 参考: 和该主题相关的文档可参考 manifest....Goal: 该小节的目标是让odoo识别我们的新模块,一个空壳。它将显示在Apps中 创建模块的第一步:新建一个目录。...其必不可少的字段为 name, 但通常会包含更多信息。...odoo框架会确保depends中配置的依赖模块在我们的模块被安装之前安装。 而且,如果这些模块中的某个依赖被卸载,我们的模块及其它任何依赖它的模块都会被卸载。...Odoo采用和Linux发行包管理一样的工作方式。
领取专属 10元无门槛券
手把手带您无忧上云