散列索引:将字段的值哈希化后创建索引,适用于需要随机访问的情况。 在MongoDB中,选择适当的字段创建索引是提高查询性能的关键。...以下是一些指导原则: 根据查询频率选择字段:根据应用程序中经常进行的查询来选择字段创建索引。对于频繁查询的字段,应优先考虑创建索引,以提高查询速度。 考虑字段的选择性:选择性是指字段的值的唯一性程度。...选择性较高的字段更适合创建索引,因为它们可以更好地过滤数据,减少查询的数据量。 考虑字段的数据类型:不同类型的字段对索引性能有不同的影响。...例如,字符串类型的字段比整数类型的字段更消耗资源,所以应谨慎选择字符串字段创建索引。 复合索引的选择:当需要同时查询多个字段时,可以考虑创建复合索引。复合索引可以提高查询性能并减少内存占用。...在创建复合索引时,应根据查询的顺序和频率选择字段的顺序。 避免过度索引:创建过多的索引会增加数据库的存储和维护成本,并可能导致性能下降。应根据实际需求和查询模式来选择字段创建索引,避免过度索引。
选择字段 在上一篇教程中,我们已经创建好了待办事项的模型,但是只是添加了「描述」和「已完成?」两个字段,这肯定是不能满足我们的需求的。...priority,并且指定了三个可供选择的程度类型,一般情况下,如果一个字段只有固定的几种可选值,通常都会选择使用 Selection 字段,它接受一个元组列表作为参数,其中元组的组成为 (value...此处我们还给这个字段添加了默认值 todo,表示当一个待办事项被创建后,如果没有指定紧急程度,将默认是待办状态。我们可以为任意类型的字段添加默认值。...在上一篇教程中我们提到过,在对模型进行改动之后,需要对模块进行升级才能看到变更后的样子,除了从应用列表中找到模块进行升级外,我们还可以在命令行中给 Odoo 的启动命令加上参数 -u todo 指定升级.../mymodules --db-filter=^demo$ -d demo -u todo 升级后创建或打开任意一条待办事项进入到表单页面,就可以看到已经多了「紧急程度」这个字段了,并且默认选择了「待办
模型和基本字段 在上一章的末尾,我们创建一个odoo模块。然而,此时它仍然是一个空壳,不允许我们存储任何数据。...有两大类领域字段:‘简单’字段--直接存储在模型表中的原子值,形如Boolean, Float, Char, Text, Date 和Selection, ‘关系型’ 字段--连接相同或者不同模型的记录...Selection(选择列表)定义为元组列表,查看示例 修改odoo14/custom/estate/models/estate_property.py文件 #!...required (bool, default: False) 如果为 True, 表示该字段值不能为空。创建记录时必须拥有默认值或给定的值。...自动创建的字段(Automatic Fields) 参考: 该话题相关文档可参考 Automatic fields. odoo会在所有model(当然,也可以配置禁止自动创建某些字段)中创建少数字段。
[源代码] 封装不同值之间的互斥选择。...此外,所有简单的存储字段(布尔值、整数、浮点值、字符、文本、日期、日期时间、选择、many2one)都会被提取;它们对应于模型表的列,并在同一查询中高效地获取。...– 如果用户尝试为字段输入不在选择范围内的无效值 UserError–如果将在对象层次结构中创建循环,操作的一个结果(例如将对象设置为其自己的父对象) Model.copy(default=None...– 如果用户尝试为字段输入不在选择范围内的无效值 UserError–如果将在对象层次结构中创建循环,操作的一个结果(例如将对象设置为其自己的父对象)(官方原文:if a loop would be..., 值必须匹配选择值(通常为str,有时为int) 对于odoo.fields.Many2one,值必须为记录的数据库标识 其它非关系字段,使用字符串值 危险 出于历史和兼容性原因,odoo.fields.Date
现在做对日项目,有时遇到选择list项目需要设重复值的情况,一般情况下直接增加重复值会发生错误而无法设定,这里利用翻译的方法可以解决这样的问题,例如,我现在自定义一个选择list项目language,它的值分别是...image.png image.png 这里在PageLayout上正常表示三个值,分别是01:英语,02:日语,03:中国语 image.png 在已经存在【02:日语】的基础上,增加【04:日语】的话...,会发生【Duplicate Values】的错误。...image.png 解放方法: 1.为避免重复,先直接增加【04:日语_04】的API Name和值。...image.png 5.如下,这个选择list项目的值就会有两个【日本語】 image.png 6.在VsCode中,执行如下命令,可以把资源取下来。
在上一章中已经看到,odoo能够为给定模型生成默认视图。实际上,默认视图对于业务应用程序来说是不可接受的。相反,我们至少应该以逻辑的方式组织各个字段。 视图是在带有操作和菜单的XML文件中定义的。...它们是ir.ui.view model的实例。 在我们的estate模块中,我们需要以逻辑方式组织字段: 在列表(树)视图中,我们希望显示的不仅仅是名称。 在表单视图中,应该对字段进行分组。...表单用于创建和编辑单条件记录,其根元素为 ,由高层框架元素(group和notebook)和交互元素 (按钮和字段): ...在odoo中,domain对记录上的条件进行编码:domain是用于选择模型记录子集的条件列表。每个条件都是一个包含字段名、运算符和值的三元组。...如果指定字段满足作用于值的运算符的条件,则记录满足条件。
odoo中,用户接口(action,菜单和视图)大部分是通过创建和组装XML文件中的记录来定义的。常见的模式为 菜单> action > 视图。为了访问记录,用户在几个菜单级中导航。...view_mode 可获取的视图。本例中为列表(树)和表格视图。 odoo中到处都可以找到例子,但是这个 简单action的好例子。关注XML 数据文件结构,因为你在后续的练习中会用到。 值 练习 添加菜单 在合适的目录(本例中为odoo14/custom/estate/models/views)创建 estate_menus.xml 文件...‘Unknown’,而last_seen 字段默认值为当前时间 练习 -- 设置默认值 添加适当的默认值: 卧室数量默认值为 2 可用日期默认为3个月内 修改 odoo14\custom\estate...练习 -- 添加state字段 为estate.property model添加state 字段(字段名可自定义),一个选择列表。
例如,在我们的房地产场景中,我们希望在常规用户视图中直接显示销售人员的财产列表。...在介绍特定的Odoo模块继承之前,让我们看看如何更改标准CRUD(创建、检索,更新或删除)方法的行为 Python继承(Python Inheritance) 目标: 不能删除状态不为New、Canceled...创建报价时,设置房产状态为‘Offer Received’,如果用户试图以低于已存在报价的金额创建报价时抛出错误。 提示: 可在vals中获取property_id 字段,但是它是一个int型。...目标: 在用户表单视图中显示与销售人员关联的avaliable房产列表其用户表单视图 Odoo提供了视图继承,其中子“扩展”视图应用于根视图之上,而不是就地修改现有视图(通过重写它们)。...它的arch字段包含多个xpath元素,用于选择和更改父视图的内容,而不是单个视图:
环境 odoo-14.0.post20221212.tar Actions(动作) action定义系统响应用户操作的行为:登录、操作按钮、选择发票等… action可以存储在数据库中,也可以作为字典直接返回...包含字段: res_model action触发的要显示的视图关联的模型 views (view_id,view_type)对的列表。...(否则创建一个条新记录) search_view_id (可选) (id, name) 对, id 为动作需要加载的指定搜索视图的数据库ID。...默认值为“Unnamed”,注意:如果name值为空字符串,则默认为 Unnamed 例如,要使用列表和表单视图打开客户(设置了customer标志的partner): { "type": "ir.actions.act_window...highlight=do_action#the-action-manager 在数据库window action中,操作有几个不同的字段,这些字段应被客户端忽略,主要用于组成view列表 view_mode
如果(规则)未选择某个操作,则不会为该操作检查规则,就像该规则不存在一样。 规则默认适用所有操作。...危险提示 创建多个全局规则是有风险的,因为可能创建不重叠的规则集,这将删除所有访问权限 应用实例 estate/security/security_estate_property_model_groups.xml...) ORM字段可以具有提供组列表的groups属性(值为逗号分隔的组XML ID列表,如groups='base.group_user,base.group_system')注意:groups属性值格式...如果当前用户不在列出的组中,他将无权访问该字段: 将自动从请求的视图中删除受限制的字段 从fields_get()响应中删除受限制的字段 尝试(显式的)读取或写入受限字段会导致访问错误 修改estate...注意:通过为当前视图中目标字段添加groups属性实现的权限控制仅作用于当前视图,如果希望当前视图模型(Model)的所有视图中,对该字段实现统一的权限控制话,需要在模型定义中,为目标字段添加groups
作为登录公司用户使用后端(web客户端)时,这不是问题:登录时可以选择数据库,然后加载自定义设置。 ...这是--db filter的目的之一:它指定如何根据所请求的主机名(域)选择数据库。该值是一个正则表达式,可能包括动态注入的主机名(%h)或访问系统所通过的第一个子域(%d)。 ...当Postgres部署不是本地部署和/或不使用安装默认值时,可以使用数据库选项覆盖此设置。 打包的安装程序将自动创建一个新用户(odoo),并将其设置为数据库用户。 数据库管理界面受管理密码设置保护。...要使数据库管理界面完全不起作用,需要在不使用createdb的情况下创建PostgreSQL用户,并且数据库必须由其他PostgreSQL用户拥有。...工作进程数量计算 数量规则:(#CPU * 2) + 1 Cron工作者需要CPU 1个工作进程~=6个并发用户 内存大小计算 我们认为20%的请求是繁重请求,而80%是简单请求 一个繁重的工作,当所有的计算字段都设计好了
模型之间的关系(Relations Between Models) 上一章介绍了为包含基本字段的模型创建自定义视图。然而,在任何真实的业务场景中,我们都需要不止一个模型。此外,模型之间的链接是必要的。...comodel,必须在comodel中定义Many2one 字段 练习 添加房地产报价表 创建 estate.property.offer 模型,并添加以下字段: Field Type Attributes...(res.partner) required property_id Many2one (estate.property) required 使用price,partner_id,status字段创建列表和表单视图...,不必创建动作和菜单 添加offer_ids字段到estate.property 模型极其表单视图 这里有几件重要的事情需要注意。...当我们通过one2many字段创建记录时,为了方便,会自动填充相应的many2one 添加odoo14\custom\estate\models\estate_property_offer.py #!
如果重写生效,我们可以继续创建发票。不幸的是,没有一种简单的方法可以知道如何在Odoo中创建任何给定的对象。大多数时候,有必要查看其模型,以找到所需的字段并提供适当的值。...为了创建了发票,我们需要以下信息: 一个 partner_id: 顾客 一个move_type: 它有几个可能的值 journal_id: the accounting journal 这足够创建一个张空发票...create 方法不接受结果集作为字段值。...为此在account.move创建中包含invoice_line_ids字段,这是一个One2many字段。One2many和Many2many使用通用ORM方法中描述的特殊“commands”。...这种格式是一个按顺序执行的三元组列表,其中每个三元组都是要对结果集执行的命令。
QWeb简史 到目前为止,我们的房地产模块的界面设计相当有限。构建列表视图很简单,因为只需要字段列表。...Odoo自带内置引擎:QWeb模板。QWeb是Odoo使用的主要模板引擎。它是一个XML模板引擎,主要用于生成HTML片段和页面。 你可能已经在Odoo见过 看板,其中的记录以卡片状结构显示。...目标: 本节结束时创建一个房产的看板视图 在我们的地产应用程序中,我们希望添加一个看板视图来显示我们的房产。看板视图是标准的Odoo视图(如表单和列表视图),但其结构更灵活。...练习--制作一个最小的看版视图 根据上述提供的简单例子,为房产创建一个最小化的看板视图。唯一展示的字段为name....在上面的示例中,字段name被添加到元素中,但state在它之外。当我们需要字段的值但不想在视图中显示它时,可以将其添加到元素之外。
然而,我们可能需要给定模型中字段之间的链接。有时,一个字段的值是根据其他字段的值确定的,有时我们希望帮助用户输入数据。...自然地我们将总面积定义这两者的总和,我们将为此使用计算的字段的概念,即给定字段的值将从其他字段的值中计算出来。 到目前为止,字段已直接存储在数据库中并直接从数据库中检索。字段也可以被计算。...在这种情况下,不会从数据库中检索字段的值,而是通过调用模型的方法来动态计算的字段的值。 要创建计算的字段,请创建字段并将其属性compute设置为方法的名称。...提示: create_date 仅在记录创建时被填充,因此需要一个回退,防止创建时的奔溃 在表单和列表视图中添加字段,正如本章目标中显示的第二个动画中的一样。...设置“garden”字段后,我们希望为花园面积和朝向提供默认值。此外,当“花园”字段未设置时,我们希望花园面积和重置为零,并删除朝向。在这种情况下,给定字段的值会影响其他字段的值。
、过滤条件 视图定义 为设置action打开的tree列表视图,添加默认搜索,搜索条件为 state字段值等于True 的、元素的name属性值 content 如果fieldName为搜索字段的name属性值,那么...content表示需要搜索的内容,输入内容是字符串,则需要添加引号,形如'test';如果fieldName为搜索过滤器的name属性值,那么content表示布尔值,该值为真,则表示默认开启...> 说明:context属性值中的字典的键值如果为模型中定义的字段名称,则该字段名称必须以元素的形式,出现在模型对应的视图(即不能是内联视图,比如内联Tree列表)中,否则会出现类似错误提示...为可编辑列表视图字段搜索添加查询过滤条件](odoo 为可编辑列表视图字段搜索添加查询过滤条件.md) 用于记录集,传递数据给模型方法 模型设计 #!
使用若依系统的时候,在列表中之间修改某个字段的值或者实现如下功能怎么实现?...这里凯哥使用两种方法来实现: 方法一:自己写代码来实现 思路: 可以参照列表中操作: 我们可以看到,在列表最后操作,其实是a标签的。我们可以模仿这个来写。...那么我们也模仿这个拼接我们需要的html片段: 找到我们需要修改的字段位置。...其中row.purchaseNum是需要展示的字段值。...如下图: 如果修改的字段是下拉框的话,同理。如下图: 5:修改保存时候触发的函数。
, reload-刷新tree列表, do_action-执行action } 说明: 函数返回值,具体需要返回啥,实际取决于下文js实现(上传成功后需要执行的操作),这里结合实际可能的需求...;limit 设置列表视图每页最大显示记录数 菜单定义 odoo14\custom\estate\views\estate_menus.xml 值 do_action 为 Widget() 的快捷方式(定义在odoo14\odoo\addons\web\static\src\js\core...t-jquery:接收一个CSS 选择器,用于查找上下文中,同CSS选择器匹配的元素节点(为了方便描述,暂且称之为上下文节点) t-operation:设置需要对上下文节点执行的操作(为了方便描述,暂且将...,上下文节点的命名属性将被设置为属性元素的值(如果已经存在则替换,如果不存在则添加) 注意:参考官方文档,t-extend这种继承方式为旧的继承方式,已废弃,笔者实践了最新继承方式,如下 <?
选取ffers"按钮),弹出一个向导(wizard)界面,并将详情页中内联tree视图("Offers" Tab页)的列表记录展示到向导界面,且要支持复选框,用于选取目标记录,然执行目标操作。...wizard可以通过关系字段(many2one或many2many)引用常规记录或wizard记录,但常规记录不能通过many2one字段引用wizard记录 详细代码 注意:为了更清楚的表达本文主题...以下属性皆在hasCheckBoxes 为"true"的情况下起作用。 modelName 点击列表复选框时,需要访问的模型名称,需要配合modelMethod方法使用,缺一不可。...可选 modelMethod 点击列表复选框时,需要调用的模型方法,通过该方法收集列表勾选记录的数据。可选。...this.modelName = undefined; // 定义点击列表复选框时需要访问的模型 this.modelMethod = undefined; // 定义点击列表复选框时需要调用的模型方法
以下为包含一些广告的主列表视图 form视图顶层区域概括了房产的重要信息,比如name,Property Type, Postcode等等。...Goal: 该小节的目标是让odoo识别我们的新模块,一个空壳。它将显示在Apps中 创建模块的第一步:新建一个目录。...为了让开发更轻松,建议首先创建目录 /home/$USER/src/custom,然后在该目录中添加待创建的新模块对应的目录(本例为 estate)。...其必不可少的字段为 name, 但通常会包含更多信息。...创建以下目录及文件 odoo14/custom/estate/__init__.py(官方推荐路径:/home/$USER/src/custom/estate/__init__.py,注意这里的包名estate