首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在one2many弹出表单中加载另一个表的列表,以将其添加到Odoo12中的主表单中?

在Odoo12中,可以通过在one2many弹出表单中加载另一个表的列表来将其添加到主表单中。以下是一种实现方法:

  1. 首先,确保已经创建了两个相关的模型,一个是主表单模型,另一个是要添加到主表单中的子表单模型。
  2. 在主表单模型中,定义一个one2many字段,用于关联子表单模型。例如,假设主表单模型名为"MainModel",子表单模型名为"ChildModel",可以在"MainModel"中添加如下字段定义:
代码语言:txt
复制
child_ids = fields.One2many('child.model', 'main_model_id', string='Child Models')
  1. 在子表单模型中,定义一个many2one字段,用于关联主表单模型。例如,在"ChildModel"中添加如下字段定义:
代码语言:txt
复制
main_model_id = fields.Many2one('main.model', string='Main Model')
  1. 在主表单的视图中,添加一个one2many字段的tree视图,用于显示子表单的列表。例如,在"MainModel"的视图中添加如下代码:
代码语言:txt
复制
<field name="child_ids">
    <tree>
        <!-- 定义子表单的列表视图 -->
        <field name="field1"/>
        <field name="field2"/>
        <!-- 添加其他需要显示的字段 -->
    </tree>
</field>
  1. 最后,在主表单的视图中,添加一个按钮或链接,用于打开one2many弹出表单,并加载子表单的列表。例如,在"MainModel"的视图中添加如下代码:
代码语言:txt
复制
<button name="open_child_form" string="Add Child" type="object"/>
  1. 在"MainModel"的对应模型中,定义按钮的方法。例如,在"MainModel"的模型中添加如下代码:
代码语言:txt
复制
@api.multi
def open_child_form(self):
    return {
        'name': 'Child Form',
        'view_type': 'form',
        'view_mode': 'tree,form',
        'res_model': 'child.model',
        'type': 'ir.actions.act_window',
        'domain': [('main_model_id', '=', self.id)],
        'context': {'default_main_model_id': self.id},
    }

通过以上步骤,就可以在one2many弹出表单中加载另一个表的列表,并将其添加到Odoo12中的主表单中。

请注意,以上代码仅为示例,实际应用中需要根据具体的模型和字段名称进行相应的修改。此外,Odoo还提供了丰富的文档和社区支持,可以进一步了解和学习Odoo的开发和配置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

最新iOS设计规范四|3大界面要素:视图(Views)

在较大屏幕上,动作弹出形式同时出现。 ? 在执行潜在破坏性操作之前,请使用操作请求确认。如果是非破坏性操作可以使用下拉菜单(控件一种,后面会讲到)。...活动由活动视图管理,工作弹出窗口形式显示,具体取决于设备和方向。活动被用来给用户在APP执行一些自定义服务或任务。...某些情况下,在新数据加载出来之前,先展示之前旧数据也是有意义。 在内容加载时配进度条指示进度。...如果列表数据需要一段时间才能加载出来,请显示进度条或旋转加载器(俗称小菊花),向用户保证APP仍在运行。 保持内容新鲜性。可以考虑定期更新表格内容,及时展示新数据。但不要改变滚动位置。...相反,将内容添加到开头或结尾,让用户在准备好时滚动到它。一些APP在加载新数据时会显示一个加载器,并提供一个直接跳转到该数据控件。最好还包括一个刷新控件,这样用户就可以随时手动进行更新。

8.4K31

odoo 开发入门教程系列-模型之间关系(Relations Between Models)

人们可以很容易地想象一个模型包含客户,另一个模型则包含用户列表。你可能需要参考任何现有业务模型上客户或用户。...到estate.property 模型,表单列表视图 提示: 视图中,使用 widget="many2many_tags"属性正如这里展示一样。...参考:主题关联文档可以参考One2many 在我们房地产模块,我们想定义房产报价概念。...然而,在本例,我们希望显示给定地产报价列表,因此我们将使用one2many概念。 one2many是many2one反向实现。...首先,我们不需要所有模型操作或菜单。某些模型只能通过另一个模型访问。在我们练习中就是这样:报价总是通过房产获得。 其次,尽管property_id字段是必需,但我们没有将其包含在视图中。

4.3K40

Cheat Engine 官方教程汉化

单击下一次扫描后,您可能需要继续单击击中我,然后重新扫描,告诉找到地址列表足够小,可以使用。 只需双击找到列表地址,即可将其添加到作弊。...因此,只需像以前一样扫描查找健康地址,然后将其添加到地址列表。 现在再次单击新扫描按钮。然后将扫描仪设置为双精度值,输入当前弹药值。设置时,单击第一个扫描按钮。...因此,只需像以前一样扫描查找弹药地址,然后将其添加到地址列表即可。 现在将值更改为5000,然后下一步按钮应变为启用状态。然后单击下一步按钮继续执行下一步。...第五步:代码查找器 当您开始步骤 5 时,您应该看到表单如下所示。 因此,首先找到该值,然后将其添加到地址列表。此时继续保存和密码,以防调试器设置不正确。...将一个添加到作弊,双击已添加到地址列表内存记录地址,复制该地址,然后选中指针复选框,然后将该地址粘贴到指针基址

2.5K10

三分钟让你了解什么是Web开发?

在我们JavaScript示例,我们继续以我们价格列表为例,添加另一个列——特殊价格——默认情况下是隐藏。我们会在用户点击它时候显示它。...HTML表单中最常用方法是GET和POST。 服务器端脚本可以读取浏览器通过POST发送值,然后处理它或将其存储到文件或数据库。...例如,让我们同样价格文件为例,假设公司有数千个产品,我们想知道列表中最后一个产品信息,这意味着我们需要阅读所有的产品直到找到我们想要产品。...您可能已经猜到,另一种选择是将“用户”信息存储在另一个,并将其与下面的“Related”Id关联在一起。...该脚本还可以进行处理,可以从获取服务器日期和时间,也可以是基于从另一个或web服务检索值来计算字段。 另一个注意事项:脚本也可以执行验证,也称为服务器端验证,确保数据是有效

5.7K30

excel常用操作大全

此时,您所有操作都针对所有工作,无论是设置页眉和页脚还是打印工作。6.在Excel2000制作工资,只有第一个人有工资表头(编号、姓名、岗位工资.),并希望工资单形式输出它。...14.如何在屏幕上扩大工作空间? 从“视图”菜单,选择“全屏”命令。 15.如何使用快捷菜单?弹出菜单包括一些最常用命令,可以大大提高操作效率。...19.如何在表单添加斜线? 一般来说,我们习惯在表单上使用斜线,但是工作本身不提供这个功能。事实上,我们可以使用绘图工具来实现: 点击“绘图”按钮,选择“直线”,鼠标将变成一个十字。...如果您可以定义一些常规数据(办公室人员列表),您经常需要使用这些数据作为将来自动填充序列,这难道不是一劳永逸吗?...众所周知,在工作簿复制工作方法是按住Ctrl键,并将选定工作沿标签线拖到新位置。复制工作“源工作名称(2)”形式命名。例如,如果源是ZM,则其克隆是ZM(2)。

19.1K10

odoo Actions学习总结

binding_view_types 逗号分隔视图类型列表,即Action需要显示上下文菜单所在视图,主要是“列表”和“表单”。...默认获取模型默认搜索视图。 target (可选) 视图是否应在内容区域(current)、全屏模式(fullscreen)或对话框/弹出窗口(new)打开。...context (可选) 传递给视图附加上下文 domain (可选) 隐式添加到所有视图搜索查询过滤domain limit (可选) 默认情况下要在列表显示记录数。...(默认= tree,form ) 逗号分隔视图类型列表,格式为字符串(注意不要包含空格)。...views列表特定视图,以防其类型是 view_mode 列表一部分,并且尚未由view_ids某个视图填充 这些主要用于从数据文件定义action: <record model="ir.actions.act_window

2.6K30

Selenium自动化工具集 - 完整指南和使用教程

Selenium 概述: Selenium 是一个用于自动化浏览器操作工具集。它通过模拟用户在浏览器行为,点击、输入、表单提交等,来实现自动化测试和网页数据抓取等功能。...将驱动程序添加到环境变量:将下载驱动程序所在路径添加到系统环境变量,这样 Selenium 才能找到并使用该驱动程序。...: # 切换到弹出框 alert = driver.switch_to.alert # 接受弹出框 alert.accept() # 关闭弹出框 alert.dismiss() 处理表单和下拉列表:...Selenium 提供了相应方法来处理表单字段和下拉列表: 输入文本到表单字段: element.send_keys("text") 选择下拉列表选项: from selenium.webdriver.support.ui...获取元素文本内容: text = element.text 使用该方法可以获取特定元素文本内容,并将其存储在变量 text 。这对于提取网页上文本信息非常有用。

67510

那些你从不使用 HTML 属性,背后竟然大有文章,赶快了来了解下

一些鲜为人知功能允许您自定义出现在此类列表编号行为: 属性,相反顺序对reversed项目进行编号(从高到低,而不是默认从低到高); 属性,定义从start哪个数字开始; 属性,定义是type...您所见,使用纯 HTML 有序列表比您通常习惯要灵活得多。 该reversed属性是一个有趣属性,因为它实际上并没有反转列表本身内容;它只会反转每个列表项旁边数字。...然后尝试使用Toggle Reversed按钮反转列表您所见,除了有序列表默认行为之外,还有很多可能性!...rel=preload通知浏览器我们希望指定资源优先加载,因此它们不会被脚本和样式之类东西阻塞。...如果您使用过本文中提到任何属性,或者如果您知道在您项目中使用过另一个 HTML 功能,请随时在评论告诉我。

1.4K30

Spread for Windows Forms快速入门(15)---使用 Spread 设计器

在设计器属性窗口中列出了当前选中对象属性。用户可以使用对象列表选中指定对象,也可以通过点击表单、单元格行、单元格列、单元格来选中指定对象,接下来就可以在属性窗口中编辑选中对象属性了。...然后,我们需要配置 Spread 表单。 3. 设定 Spread 表单大小。点击整个 Spread 表单角区域选中Spread 表单。...点击单元格列 B 标签“B”,采用上面的步骤,将其标签更改为“# 已产出”,右键点击选中列,在弹出菜单中选择单元格类型,然后选择number类型,并且将其列宽调整为 75。...点击工具栏上文件菜单保存选项来保存项目。 从 Spread 设计器中将设计结果应用到 Spread 控件后,会在开发环境中生成一些代码,如下图所示: ?...当Spread 设计器单独应用程序运行时候,有一些功能将无法使用,因为这些功能 将会同Visual Studio集成,会读取或者应用一些设置到 Visual Studio

2K90

第二章 你第首个Electron应用 | Electron in Action(中译)

--save-dev标志将其添加到package.json依赖项列表。这意味着如果有人下载了这个项目并运行npm install,他们将默认获得Electron。...我们将以下代码添加到app/main.js告诉渲染器进程在我们之前创建窗口中加载这个HTML文档。 列表2.6 将HTML文档加载窗口: ....在电子应用程序添加样式与在传统web应用程序添加样式没有多大不同。尽管如此,一些细微差别还是值得讨论。 让我们从将style.css文件添加到应用程序目录开始。...我将包含链接到样式HTML标记—因为,在我作为web开发人员20年里,我仍然不记得如何第一次尝试就做到这一点。 列表2.11 在HTML文档引用样式: ....您可以在任意键下存储简单数据类型,字符串和数字。让我们设置另一个帮助函数,它将从标题和URL生成一个简单对象,使用内置JSON库将其转换为字符串,然后使用URL作为键存储它。

4.6K30

【愚公系列】2023年11月 Winform控件专题 Label控件详解

欢迎 点赞✍评论⭐收藏前言Winform控件是Windows Forms用户界面元素,它们可以用于创建Windows应用程序各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、...然后将其添加到Form,如下图所示:当我们改变窗口大小时,Label控件宽度也会随之改变,但是其距离窗口左边依然不变。这就是Anchor属性作用。...在该事件,判断文本框是否为空,如果为空则弹出提示框并阻止焦点离开控件。这样,用户就必须输入有效值才能离开文本框。...1.8 contextMenuStripContextMenuStrip是Winform一个弹出式菜单控件,通常用于右键菜单等场景。...标签页:Label控件可以作为选项卡标签页,展示选项卡名称。标题:Label控件可以作为窗口或面板标题。表单:Label控件可以作为表单各项标签,展示各项名称。

44911

你不知道HTML

一些鲜为人知功能允许您自定义出现在此类列表编号行为: reversed属性,相反顺序对项目进行编号(从高到低,而不是默认从低到高); start属性,定义从哪个数字开始; type属性,定义是使用数字...您所见,使用纯 HTML 有序列表比您通常习惯要灵活得多。 该reversed属性是一个有趣属性,因为它实际上并没有反转列表本身内容;它只会反转每个列表项旁边数字。...使用单选按钮选择该type属性五个值之一。然后尝试使用Toggle Reversed按钮反转列表您所见,除了有序列表默认行为之外,还有很多可能性!...但是,如果您应用程序或布局需要一些不同东西,您可以选择将表单输入放在您想要任何位置,并将其与任何元素相关联——即使不是元素父元素。...rel=preload通知浏览器我们希望指定资源优先加载,因此它们不会被脚本和样式之类东西阻塞。

4.2K164

在 jQuery Mobile 中使用 UI 组件

第二个选项是在对话框超链接上使用 data-rel 属性,并将其值设置为 back,如以下代码所示。当在对话框包括一个 Cancel 按钮时,这是一个不错选项。...要创建一个 navbar,您只需将一个 data-role 属性添加到环绕着一个列表元素,并将其值设置为 navbar(清单 3)。...该列表项还包括一个用作在对话框购买该列表一个超链接图标。您也可以使用 data-split-icon 属性,修改显示在列表项右侧拆分按钮默认图标。 另一个有用基本列表增强是列表分隔符。...例如,您可以用字母标记您列表项,并使用列表分隔符按字母每个字母来分隔它们,或者您可能有一组与音乐相关列表项,您可以用列表分隔符将它们对应不同音乐流派进行分类。...只需将 data-filter 属性添加到列表,并将其值指定为 true(清单 12)。 清单 12.

8K20

基于 HTML5 WebGL 3D 棉花加工监控系统

http://www.hightopo.com/demo/Plucker/ 代码实现  创建场景 首先是创建一个三维场景,通过将场景元素添加到保存数据数据容器即可: var dm = new ht.DataModel...addToDOM 方法是将调用此方法组件通过 getView 方法获取到此组件底层 div,随后将此 div 添加到 body 体。...(text);// 将 JSON 反序列化到数据容器 }); 上面出现 ht.Default.xhrLoad 方法是一个封装好异步加载文件函数,可以通过这种方法来加载 JSON 文件,因为此方法为异步加载...( width、height、opacity 等)从一个值平滑缓动至另一个值,同时提供了丰富缓动方式用于实现各种效果。...dm.enableAnimation(); 表单创建 前面代码中出现 form 表单,是通过 createForm 方法创建,此方法定义如下(PS:由于 form 表单列表稍长,这里就选取几个比较有代表性表单元素进行说明

1.1K20

Genesis框架从入门到精通(2):什么是动作?

这很有用,因为你不需要在代码里考虑钩子是否存在逻辑,这也意味着你不需要担心万一钩子没有挂载成功时候就执行了代码。这在Genesis框架中被用于日志列表循环和评论模板。...拼错任何一个,使用错误符号,或者顺序不对,你就会收到报错。学会阅读这些错误,你会知道如何解决它,但这是另一个教程。 第四部分是优先级。默认值是10。如果未设置,则WordPress会将其视为10。...例如,如果你不想在页面上显示评论表单,那么你尽可以执行移除评论表单操作,不管这个网页是不是页面类型,即使这个表单只能在单个页面上加载。 还有一个需要注意地方。...我不打算再次贴上所有代码,但如果你不想来回点击,我会在这里放一些相关代码片段。 注意看下,代码将被添加到循环内(genesis_before_post是循环中第一个钩子)。...小结 但,知道只是成功一半。本系列下一部分将介绍如何在Genesis文件查找需要动作(action)并在子主题中更改它们。

72220

原 基于 HTML5 WebGL 3D

addToDOM 方法是将调用此方法组件通过 getView 方法获取到此组件底层 div,随后将此 div 添加到 body 体。...上面出现 ht.Default.xhrLoad 方法是一个封装好异步加载文件函数,可以通过这种方法来加载 JSON 文件,因为此方法为异步加载,所以如果要操作此函数反序列化后数据容器元素,需要在此函数中进行后续操作...)方法来做,动画插件更进一步对动画进行封装,用户只需用描述性说明 HT 即可自动实现动画过程,动画插件可以将图元一个或多个属性值 ( width、height、opacity 等)从一个值平滑缓动至另一个值...,此方法定义如下(PS:由于 form 表单列表稍长,这里就选取几个比较有代表性表单元素进行说明): // 创建 form 表单 function createForm() { var fp...= 'rgba(255, 255, 255, 0.3)'; document.body.appendChild(fp.getView());// 将表单组件底层 div 添加到 body 体

1.6K60

富Web应用架构与转化方法:Web应用系列第二篇

例如,单击按钮可创建弹出模式对话框处理信息。丰富组件使用标记写入页面包含非常复杂Javascript库。今天有许多优秀开源组件库。...在本课程,我们将使用RichFaces组件。 丰富应用程序标志之一是缺少页面重新加载和减少页面导航。例如,您在表单上输入数据,然后单击“提交”按钮。没有明显等待响应。...三、Ajax表单提交 我们将看到第一个特性,是能够提交表单数据并仅在页面的该部分调用JSF生命周期而无需重新加载页面。 以下是声明注册表单页面部分(简化以供讨论): ?...他们可以接受: 要渲染空格分隔组件列表 @form - 提交在其嵌入表单定义所有字段 @this - 组件本身内声明区域或组件 @none - 不渲染页面的任何部分 @all - 渲染页面上所有组件...此标记声明每当调用dataavailable回调时,都会呈现包含成员列表数据可折叠面板。 四、客户端验证 我们可以使用RichFaces使用Ajax支持字段验证。

3.5K20

带你认识 flask 全文搜索

另一个有趣区别是搜索表单将存在于导航栏,因此它将会出现应用所有页面。 这里是搜索表单类,只有q文本字段: app/main/forms.py:搜索表单。...你是否还记得表单默认添加了CSRF保护,包含一个CSRF标记,该标记通过模板form.hidden_tag()构造添加到表单。...我在上面说过,我想在所有页面展示这个表单,所以更有意义将其作为导航栏一部分进行渲染。...以下是我如何在基础模板渲染表单代码: app/templates/base.html:在导航栏渲染搜索表单。 ......只有在定义了g.search_form时才会渲染表单。此检查是必要,因为某些页面(错误页面)可能没有定义它。这个表单与我之前做过略有不同。

3.5K20

Django 3.1 官网学习路线

现在您在“更改列表”页面查看问题。此页面显示数据库所有问题,并允许您选择一个进行更改。有“What's up?”“我们之前提出问题是: 这里需要注意是: 表单是根据问题模型自动生成。...页面的底部提供了几个选项: 保存-保存更改并返回此类型对象更改列表页。 保存并继续编辑——保存更改并重新加载此对象管理页面。 保存并添加另一个——保存更改并为这种类型对象加载一个新空白表单。...上下文是模板变量名到 Python 对象映射字典。 通过将浏览器指向" /polls/ "来加载页面,您应该会看到一个项目符号列表,其中包含教程第二部分" What 's up "问题。...还要注意在“问题”旁边“添加另一个”链接。每一个与其他对象具有 ForeignKey 关系对象都可以免费得到这个。当你点击“添加另一个”,你会得到一个弹出窗口“添加问题”形式。...如果在该窗口中添加一个问题并单击“Save”,Django 会将该问题保存到数据库,并在您正在查看“add choice”表单动态地将其添加为选中选项。

8.1K10
领券