当前位置: 首页 > news >正文

如何在 Odoo 16 中对 Many2Many 字段使用 Group by

Many2many 字段与 Many2one 字段类似,因为它们在模型之间建立了新的关系。在Odoo 16中,您无法按 many2many 字段分组,因为可以使用 many2many 记录选择任何记录。当您使用 many2many 字段给出 group by 过滤器时,您将遇到断言错误。 

介绍如何在 Odoo 16 中使用 Many2Many 字段组。 

这里我将使用已经存在的 tag_ids many2many 字段。如下面的代码所示:

.py 

tag_ids = fields.Many2many('crm.tag', 'sale_order_tag_rel', 'order_id', 'tag_id', string='Tags')

.xml 

<record id="view_sales_order_filter" model="ir.ui.view"><field name="name">sale.order.view.list.inherit.module.name</field><field name="model">sale.order</field><field name="inherit_id" ref="sale.view_sales_order_filter"/><field name="arch" type="xml"><xpath expr="//search/group/filter[@name='customer']" position="after"><separator/><filter name="tag_ids" string="Tags" domain="[]" context="{'group_by': 'tag_ids'}"/><separator/></xpath></field>
</record>   

可以使用 Many2many 字段进行 group_by 筛选。如果我们计算字段,这是可行的,但如果 many2many 字段中的值为 2,则它将以逗号 (,) 显示,如 tag1、tag2 等,因为它是一个字符字段。

.py

product_tags = fields.Char(string='Tags', compute='_get_tags', store=True)
@api.model
@api.depends('tag_ids')
def _get_tags(self):for rec in self:if rec.tag_ids:product_tags = ','.join([p.name for p in rec.tag_ids])else:product_tags = ''rec.product_tags = product_tags

.xml 

<record id="view_sales_order_filter" model="ir.ui.view"><field name="name">sale.order.view.list.inherit.module.name</field><field name="model">sale.order</field><field name="inherit_id" ref="sale.view_sales_order_filter"/><field name="arch" type="xml"><xpath expr="//search/group/filter[@name='customer']"position="after"><separator/><filter name="tag_ids" string="Tags" domain="[]"context="{'group_by': 'product_tags'}"/><separator/></xpath></field>
</record>
<record id="sale_view_form_custom" model="ir.ui.view"><field name="name">ale.order.view.form.inherit.module.name</field><field name="model">sale.order</field><field name="inherit_id" ref="sale.view_order_form"/><field name="arch" type="xml"><xpath expr="//field[@name='payment_term_id']" position="after"><field name="product_tags"/></xpath></field>
</record>

这里我们添加了一个 Char 字段 product_tags。它是一个计算字段,将标签名称连接到该字段。 

您可以看到我们在 XML 文件中提供了一个名为标签的分组过滤器。当我们尝试按这些销售订单分组时,它将显示在下面。

同样,我们可以为 many2many 字段添加 groupby。

接下来,让我们检查如何为 many2many 字段添加过滤器。

您可以创建一个替代 Many2Many 字段来计算来自 many2many 字段的值。我将提供一个例子来演示这一点。该字段必须指定 store=True。

.py

newfield_id = fields.Many2one('example_ids', compute=_compute_newfield_id, store=True) 
@api.depends('example_ids')
def _compute_newfield_id(self):for record in self:     
record.newfield_id = record.example_ids and record.example_ids[0] or False

 .xml

<field name="newfield_id" string="Example" filter_domain="[(newfield_id,'ilike', self)]"/>

您可以根据需要提供域名,因为可以在已保存的字段中简单搜索。如果您愿意,可以包含位置的 xpath。

要了解有关在 Odoo 16 中的客户门户表单中创建多对多字段的更多信息

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 昇思大模型——MindFormers的使用----从零开始安装配置环境
  • 8627 数独
  • 深度学习调参基础
  • MySQL DDL
  • 使用Docker制作python项目镜像
  • DP(2) | Java | LeetCode 62, 63, 343, 96 做题总结(96 未完)
  • 7月11日学习打卡,数据结构栈
  • vue3项目打包的时候,怎么区别测试环境,和本地环境
  • 代码随想录算法训练营第9天
  • 142. 两个字符串的最小 ASCII 删除总和(卡码网周赛第二十五期(23年B站笔试真题))
  • java使用easypoi模版导出word详细步骤
  • 我被手机所伤,竟如此憔悴。
  • 假期笔记1:anaconda的安装与pycharm中的引用
  • Linux 程序卡死的特殊处理
  • 进度条提示-在python程序中使用避免我误以为挂掉了
  • 【Leetcode】101. 对称二叉树
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Android优雅地处理按钮重复点击
  • C++类的相互关联
  • DOM的那些事
  • HTML-表单
  • JavaScript类型识别
  • js ES6 求数组的交集,并集,还有差集
  • MySQL用户中的%到底包不包括localhost?
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • SwizzleMethod 黑魔法
  • vue脚手架vue-cli
  • 闭包--闭包之tab栏切换(四)
  • 利用jquery编写加法运算验证码
  • 通过几道题目学习二叉搜索树
  • 网页视频流m3u8/ts视频下载
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 找一份好的前端工作,起点很重要
  • 我们雇佣了一只大猴子...
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​ssh免密码登录设置及问题总结
  • ​用户画像从0到100的构建思路
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • $jQuery 重写Alert样式方法
  • (06)金属布线——为半导体注入生命的连接
  • (4)STL算法之比较
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)创业的注意事项
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .Net Core中Quartz的使用方法
  • .NET MAUI Sqlite数据库操作(二)异步初始化方法
  • .Net MVC4 上传大文件,并保存表单
  • .NET 常见的偏门问题
  • .NET的微型Web框架 Nancy
  • .net和php怎么连接,php和apache之间如何连接