Odoo自带内置引擎:QWeb模板。QWeb是Odoo使用的主要模板引擎。它是一个XML模板引擎,主要用于生成HTML片段和页面。 你可能已经在Odoo见过 看板,其中的记录以卡片状结构显示。...目标: 本节结束时创建一个房产的看板视图 在我们的地产应用程序中,我们希望添加一个看板视图来显示我们的房产。看板视图是标准的Odoo视图(如表单和列表视图),但其结构更灵活。...在上面的示例中,字段name被添加到元素中,但state在它之外。当我们需要字段的值但不想在视图中显示它时,可以将其添加到元素之外。...练习--改善看板视图 添加以下字段到看板视图:expected price, best price, selling price 和tags。...您可能想看看Kanban中描述的各种选项。 练习--添加默认分组 使用合适的属性对房产分组,默认按类型分组。你必须阻止拖拽和删除。
_context is {'key1': True, 'key2': True} 需要注意的是,上下文是和记录集绑定的,修改后的上下文并不会在其它记录集中共享 应用场景示例 用于action,为关联视图添加默认搜索...、过滤条件 视图定义 为设置action打开的tree列表视图,添加默认搜索,搜索条件为 state字段值等于True 说明:'group_by': '分组字段名称' 用于视图对象按钮,传递数据给模型方法 模型设计 #!...> 说明:context属性值中的字典的键值如果为模型中定义的字段名称,则该字段名称必须以元素的形式,出现在模型对应的视图(即不能是内联视图,比如内联Tree列表)中,否则会出现类似错误提示...为可编辑列表视图字段搜索添加查询过滤条件](odoo 为可编辑列表视图字段搜索添加查询过滤条件.md) 用于记录集,传递数据给模型方法 模型设计 #!
环境 odoo-14.0.post20221212.tar Actions(动作) action定义系统响应用户操作的行为:登录、操作按钮、选择发票等… action可以存储在数据库中,也可以作为字典直接返回...所有Action都有两个强制属性: type 当前Action的类别,决定可以使用哪些字段以及如何解释action name action的名称,在客户端的界面中显示对action的简短用户可读描述...binding_view_types 以逗号分隔的视图类型列表,即Action需要显示的上下文菜单所在的视图,主要是“列表”和“表单”。...所有这些类型都必须在生成的views列表中(至少有一个False view_id) view_ids M2M(技术上不是M2M:添加了一个sequence字段,可以只由一个视图类型组成,没有视图id)...中的每个未填充类型,追加(False,type) 应用实践举例 在estate模块的estate.property模型的表单视图中,为Action添加菜单"选取offers",如下: !
res_partner表中,那么在odoo中如何区分用户类型以及如何做权限控制的呢?...可以利用该特性实现隐藏对象需求,比如针对一些常规下不需要显示的特殊字段,为其设置属性groups = "base.group_no_one",可以实现在非Debug模式下隐藏字段在视图中的显示。...如果当前用户不在列出的组中,他将无权访问该字段: 将自动从请求的视图中删除受限制的字段 从fields_get()响应中删除受限制的字段 尝试(显式的)读取或写入受限字段会导致访问错误 修改estate..."/> 验证,发现界面上,未授权上述框选权限的用户已经看不到上述字段了 注意:通过为当前视图中目标字段添加groups属性实现的权限控制仅作用于当前视图,如果希望当前视图模型(Model)的所有视图中,...接口,会调用fields_view_get方法,可以重写此方法以控制xml显示的效果(参考网络资料,未实践验证) 按钮权限(按钮级别) 类似字段权限控制,仅需在在对应视图中,为目标按钮元素
实践环境 Odoo 14.0-20221212 (Community Edition) 需求描述 如下图(非实际项目界面截图,仅用于介绍本文主题),打开记录详情页(form视图),点击某个按钮(图中的"...选取ffers"按钮),弹出一个向导(wizard)界面,并将详情页中内联tree视图("Offers" Tab页)的列表记录展示到向导界面,且要支持复选框,用于选取目标记录,然执行目标操作。...以下属性皆在hasCheckBoxes 为"true"的情况下起作用。 modelName 点击列表复选框时,需要访问的模型名称,需要配合modelMethod方法使用,缺一不可。...以上参数同下文saveSelectionsToSessionStorage 参数可同时共存 如果需要将action绑定到指定模型指定视图的Action,可以在ir.actions.act_window定义中添加...binding_model_id和binding_view_types字段,如下: <record id="action_demo_wizard" model="ir.actions.act_window
在上一章中已经看到,odoo能够为给定模型生成默认视图。实际上,默认视图对于业务应用程序来说是不可接受的。相反,我们至少应该以逻辑的方式组织各个字段。 视图是在带有操作和菜单的XML文件中定义的。...它们是ir.ui.view model的实例。 在我们的estate模块中,我们需要以逻辑方式组织字段: 在列表(树)视图中,我们希望显示的不仅仅是名称。 在表单视图中,应该对字段进行分组。...搜索视图与列表及表单视图略有不同,因为它们不显示内容。尽管它们适用于特定模型,但它们用于过滤其他视图的内容(通常是聚合视图,比如列表). 除了在使用方面的不同,他们的定义方式是一样的。...在自定义搜索视图中添加用户可能过滤的字段是非常常见的。 搜索视图还可以包含元素,这些元素充当预定义搜索的开关。...在odoo中,domain对记录上的条件进行编码:domain是用于选择模型记录子集的条件列表。每个条件都是一个包含字段名、运算符和值的三元组。
上一章,我们通过CSV文件添加了数据。当需要添加数据格式简单时,用CSV格式还是很方便的,当数据格式更复杂时(比如视图架构或者一个邮件模板),我们使用XML格式。...odoo中,用户接口(action,菜单和视图)大部分是通过创建和组装XML文件中的记录来定义的。常见的模式为 菜单> action > 视图。为了访问记录,用户在几个菜单级中导航。...view_mode 可获取的视图。本例中为列表(树)和表格视图。 odoo中到处都可以找到例子,但是这个 简单action的好例子。关注XML 数据文件结构,因为你在后续的练习中会用到。 <?...服务,查看效果 字段,属性和视图(Fields, Attributes And View) 到目前为止,我们只对房产广告使用了通用视图,但在大多数情况下,我们希望对视图进行微调。...Odoo有许多微调方式,但通常第一步是确保: 某些字段有默认值 某些字段只读 当记录重复时,某些字段不能被拷贝 在我们的房产业务案例中,我们希望:: 售价只读(往后将自动填充) 当记录重复时,可用日期和售价不能被拷贝
在介绍特定的Odoo模块继承之前,让我们看看如何更改标准CRUD(创建、检索,更新或删除)方法的行为 Python继承(Python Inheritance) 目标: 不能删除状态不为New、Canceled...为此,我们需要向res.users模型添加一个字段,并调整其视图以显示它。 Odoo提供了两种继承机制来以模块化的方式扩展现有模型。...odoo中,第一种机制最常用。在我们的例子中,我们希望向现有模型添加一个字段,这意味着我们将使用第一种机制。...这些扩展既可以添加内容,也可以从父视图中删除内容。 扩展视图使用inherit_id字段引用其父视图。...练习--添加字段到用户视图 添加property_ids字段到 base.view_users_form 中新建的notebook页 提示: 可以在 这里找到继承用户视图的示例。
添加字段到表单视图,正如本章目标中展示的那样 对于关系型字段,可以使用通过字段的路径作为依赖项: description = fields.Char(compute="_compute_description...提示: create_date 仅在记录创建时被填充,因此需要一个回退,防止创建时的奔溃 在表单和列表视图中添加字段,正如本章目标中显示的第二个动画中的一样。...最终取决于用户是否修改名称和描述值。 同时,需要注意的是,不要循环遍历 self,因为该方法在表单视图中触发,self总是代表单条记录。...对于computed field 和Onchanges的使用没有严格的规则。 在许多情况下,可以使用computed field和onchanges来实现相同的结果。...始终首选computed field,因为它们也是在表单视图上下文之外触发的。永远不要使用onchange将业务逻辑添加到模型中。
实践环境 Odoo 14.0-20221212 (Community Edition) 代码实现 模块文件组织结构 说明:为了更好的表达本文主题,一些和主题无关的文件、代码已略去 odoo14\custom...> 说明:,其中estate_customer_tree为下文javascript中定义的组件,实现添加自定义按钮...> estate_customer_tree 组件定义 js实现 为列表视图添加自定义上传数据文件按钮 odoo14\custom\estate\static\src\js\estate_customer_tree_upload.js...class属性值 替换estate.CustomerHiddenUploadForm为在对应按钮视图模板中定义的隐藏表单模版名称 替换EstateCustomerListView.buttons为对应按钮视图模板中定义的按钮模版名称...替换estate_customer_tree为自定义全局唯一值 do_action 为 Widget() 的快捷方式(定义在odoo14\odoo\addons\web\static\src\js\core
在解锁看板屏幕中,如果在冻结标列中有 X 标识,则为锁定的看板。单一标记冻结的看板或选择控制周期标志来标记控制周期内的所有看板,然后选择按钮解锁所选看板。 3. 选择 是 确认该消息。...在 看板:供应来源一览, 初始屏幕中输入以下数据,然后按 回车 确认: 字段名称 用户操作和值 注释 负责人 101 工厂 CN01 您可以查看 S233-2 和其他物料的看板。 ? ?...在 数量信号:输入屏幕中,进行以下输入: 字段名称 用户操作和值 注释 可能的条目 选择物料 单选按钮 物料 S233-2 工厂 1000 供应区域 KANBAN_06 领料数量 100 ?...在已处理的看板表中,可查看已处理看板的详细信息。已处理看板的状态已更改为使用中。...使用事务 PK22 从看板中进行部分提取不会引起库存相关的登记。此事务仅与供应控制相关。只有看板状态更改为空 时才会进行状态更改和登记。
与parent_path 字段一起,设置记录树结构的索引存储,以便使用child_of和parent_of域运算符对当前模型的记录进行更快的分层查询 _date_name= 'date' 用于默认日历视图的字段..._fold_name= 'fold' 用于确定看板视图中折叠组的字段 AbstractModel odoo.models.AbstractModel[源代码] odoo.models.BaseModel...这意味着视图中不存在的字段在创建记录期间不会触发调用。...在出现字段的表单视图中,当修改某个给定字段时,将调用该方法。在包含表单中存在的值的伪记录上调用该方法。该记录上的字段赋值将自动返回客户端。...进行格式化 odoo.fields.One2many和odoo.fields.Many2many使用特殊的“命令”格式来操作存储在字段中/与字段关联的记录集。
模型和表单,树,搜索视图 该练习是对前几章很好的扼要重述:你需要创建一个 model,设置 model,添加 动作和菜单,并且创建视图....到estate.property 模型,表单和列表视图 提示: 视图中,使用 widget="many2many_tags"属性正如这里展示的一样。...price,partner_id,status字段创建列表和表单视图 ,不必创建动作和菜单 添加offer_ids字段到estate.property 模型极其表单视图 这里有几件重要的事情需要注意...首先,我们不需要所有模型的操作或菜单。某些模型只能通过另一个模型访问。在我们的练习中就是这样的:报价总是通过房产获得的。 其次,尽管property_id字段是必需的,但我们没有将其包含在视图中。...odoo如何知道我们的报价与哪个房产相关?这就是使用odoo框架的一部分魔力:有时候事情是隐式定义的。
image.png 在事件驱动看板中,物料供应不基于预定义的看板数或预定义的看板数量。而是基于实际的物料消耗。供应区域不会持续提供和补充物料。只有特别请求时才会进行补充。...S233-2 和 S233-3 的看板。...要检查补货要素,请双击新建的看板(在本例中为重复制造的计划订单)。按下按钮显示补充可查看详细信息。...2、PK12N可选:将看板更改为错误的状态导致生成错误日志 在此过程中,将维护警报的使用,即看板内的错误操作会导致生成错误日志。在此业务情景中,需要使用强制性状态序列。...看板状态不变,即为 空。 3、PK12N将看板更改为 "状态处理中" 在此活动中,将源视图中看板的状态更改为 状态处理中。维护着一个状态序列,因此遵循序列是必需的。
创建新月份的看板可以使用这个 new 按钮或是直接拷贝上个月的页面即可。 进行预算主要有两步,首先找到当月中的预算区块,将当月所有的花销预算列在这里。...日常记账及统计视图# 有了预算,如何去记录当月的各种开销呢?下面就一起来看看。 首先在账本区块中设定一个过滤器,过滤出当月的花销,之后向该数据库记录数据即可。...在填写这些信息时还有一个小技巧,我平常花销全部使用信用卡,之后我创建了一个新的视图专门过滤出信用账户,增加新条目时会自动帮我将账户、预算账户等信息填好,可以快速记账。...您也可以按照自己的需要添加合适的视图,方便统计和记账,比如我自己用的账单就有这么多视图。...为了更好的管理个人理财,模版提供了专门的理财管理,包括了理财账户和理财账本。 在理财账户这里您可以添加自己购入的各种基金或是理财产品,并指定一个账户。未来投入的钱会在账户统计时直接扣除。
已创建物料 R233-3的看板控制周期,且对于物料R233-3,在存储位置 1070 有足够的可用库存。 角色生产计划员 后勤-生产-看板-控制-看板牌-需求源视图 1....) 的看板。 3. 选择按钮 状态在途中。 4. 请注意,状态已更改为 容器在途中 ( ? )。 5. 双击黄色看板,在 看板信息 对话框中,选择 显示补充按钮。 6....如果您查看看板(SAP GUI 中的事务 PK13N 或 PK12N;在 NWBC 中:角色:SAP_NBPR_PRODPLANNER_S;路径:生产®看板 ®控制 ®看板:需求来源视图)那么在已处理的看板中将看到...在接下来的步骤中将删除这两个需求要素,以便使用完整仓库管理查看看板的警报。 已创建物料 R233-3的看板控制周期,且对于物料R233-3,在存储位置 1070 有足够的可用库存。...8、PK13N可选:警报 – 检查看板状态 在此活动中,将检查已删除补货的看板的状态。 已删除看板的转储单和运输单。 角色生产计划员 后勤®生产 ®看板 ®控制®看板牌®需求源视图 1.
模块交互 在上一章中,我们使用继承来修改模块的行为。在我们的房地产场景中,我们希望更进一步,能够为客户生成发票。...在我们的案例中,该模块依赖estate 和account,包括房产的发票创建逻辑。采用这种方式,estate和account模块可以独立安装。当两者都安装后,链接模块将提供新功能。...我们希望为estate.property模型添加功能,即我们希望在出售房产时添加一些额外的逻辑。 第一步,我们需要扩点击“Sold”按钮时调用的操作。...不幸的是,没有一种简单的方法可以知道如何在Odoo中创建任何给定的对象。大多数时候,有必要查看其模型,以找到所需的字段并提供适当的值。 学习的一个好方法是看看其他模块是如何完成你想做的事情的。...为此在account.move创建中包含invoice_line_ids字段,这是一个One2many字段。One2many和Many2many使用通用ORM方法中描述的特殊“commands”。
约束(Constraints) 上一章介绍了向模型中添加一些业务逻辑的能力。我们现在可以将按钮链接到业务代码,但如何防止用户输入错误的数据?...例如,在我们的房地产模块中,没有什么可以阻止用户设置负预期价格。 odoo提供了两种设置自动验证恒定式的方法:Python约束 and SQL约束。..., ] 练习--添加SQL约束 添加以下约束到对应模型: 房产预期价格必须为正数 房产售价必须为正数 报价必须为正数 房产标签名称和类型名称必须唯一 使用-u estate选项重新启动服务器以查看结果...Python约束定义为用 constrains()修饰的方法,并在记录集上调用。修饰符指定约束中涉及哪些字段。当修改这些字段中的任何字段时,将自动计算约束。...警告 当和浮点数打交道时,总是使用从 odoo.tools.float_utils导入的float_compare() 和float_is_zero()方法 确保每次售价或者预期价格改变时,自动触发约束
在这篇教程里我们将会了解到 Odoo 模型里的一些其他类型的字段和特殊机制,而我依然会继续带领大家一起完善我们的 Todo 应用,不断地往里面添加一些新的功能特性,让它看起来更丰满也更实用一些。...选择字段 在上一篇教程中,我们已经创建好了待办事项的模型,但是只是添加了「描述」和「已完成?」两个字段,这肯定是不能满足我们的需求的。...Selection 类型的字段 priority,并且指定了三个可供选择的程度类型,一般情况下,如果一个字段只有固定的几种可选值,通常都会选择使用 Selection 字段,它接受一个元组列表作为参数...此处我们还给这个字段添加了默认值 todo,表示当一个待办事项被创建后,如果没有指定紧急程度,将默认是待办状态。我们可以为任意类型的字段添加默认值。...这个需求跟时间有关,并且时间是流动(一直在变化)的,所以我们应该要有一个方法在用户每次打开待办事项之前,把这个结果计算好,并且反馈给用户,还好 Odoo 的 ORM 已经为我们实现了相关的机制——计算字段
领取专属 10元无门槛券
手把手带您无忧上云