odoo - 使用 Many2Many 修改 Many2One 的域
问题描述
作为序言,我使用的是 Odoo 10 Enterprise。
我有一个自定义模块,其表单上有以下内容(这些只是相关字段):
orange_tag_id
= 这是一个 Many2Many 字段,其中_Checkboxes
定义了连接到标签模块的小部件(我们将称之为orange.tags
)。此字段显示我创建的六个或七个标签,然后应用于“product.product/template”模块中的各种产品。orange_child_ids
= 这只是父模块的子模块中的 One2Many。这列出了product_tmpl_id
Many2One,然后列出了来自父级的只读副本,orange_tag_id
该副本仅复制父表单中选择的任何内容orange_tag_id
(这是为了防止parent.orange_tag_id
在域中定义不起作用而创建的)。
当从orange_tag_id
复选框中选择标签时,它应该修改 in 的域,product_tmpl_id
然后orange_child_ids
仅在下拉显示中显示已用所选活动标签标记的产品。通过将以下内容添加到表单 XML 视图中,我已经成功地完成了这种工作orange_child_ids
:
<field name="product_tmpl_id" domain="[('orange_tag_id.id','in',parent.orange_tag_id[0])]"/>
这将仅显示已使用所选标签标记的产品,但有一个例外:Tag6 的产品(只是因为其 ID 为 6 而调用它)将始终显示在下拉列表中,无论它是否被选中。如果选择 Tag2,则显示 Tag2 和 Tag6 的产品。我尝试从定义了 Tag6 的任何产品中删除 Tag6,然后删除 Tag6 记录,重新创建标签并将其重新应用于相关产品,但问题仍然存在。我也只能在复选框中选择一个标签 - 如果选择了多个标签,我会收到以下错误product_tmpl_id
:
TypeError: not all arguments converted during string formatting
这不像没有显示正确的记录那么重要,但我也想解决这个问题,但我不完全确定如何解决。
我已经搜索了几个小时,并且知道可以在自托管安装中完成此操作的方法,但是,我们使用的是 Odoo 10 Enterprise(x_
为了便于阅读,我在上述自定义字段中省略了必需的),并且我无权访问文件系统,因此无法在需要的地方进行修改。我一直试图仅使用开发人员工具和我对数据库设置的管理访问来解决这个问题。
我在域上搞砸了很多,查看了许多问题和论坛主题,而我所拥有的是唯一有效的东西。有什么办法可以在 Enterprise 的限制内正常工作?
非常感谢。
解决方案
似乎在[2]
之后添加[0]
使一切正常并解决了我遇到的两个问题,所以:
<field name="product_tmpl_id" domain="[('orange_tag_id.id','in',parent.orange_tag_id[0][2])]"/>
这将根据在 Many2Many 字段中选择的记录过滤 Many2One 的结果。
推荐阅读
- sapui5 - 如何获得正确的行数?
- asp.net-core - SignaIr 了解连接已在服务器端结束
- c# - Twilio 选择加入/退出跟踪
- python - 日期时间库时区
- c# - Visual Studio 中的 C# 脚本突然中途停止而没有错误
- java - Maven 发布插件 | 最佳实践 | 最好直接修改POM中的版本或者修改release.properties文件
- c# - 无法从 NUnit 测试中获取 index.html
- elasticsearch - 如何检测 U 盘是否插入了 Metricbeat 或 Filebeat?
- docker - 无法使用 docker 映像在 circleci 中运行 cypress 测试
- javascript - Google Maps Javascript API 不适用于搜索框