Odoo透视表(Pivot View)设置:能否将空值显示为0?
Odoo透视表空值显示为0的实现方法
当然可以把这类空值设置成显示0,有几种实用的处理方式:
给字段设置默认值
如果是新建记录时Quantity字段为空的情况,直接在模型定义字段时加上default=0,新记录的Quantity默认就是0,透视表自然不会显示空值。示例代码:quantity = fields.Integer(string='Quantity', default=0)用计算字段转换空值
要是不想改动原有字段的默认值逻辑,可以新增一个计算字段,自动把空值转成0,之后在透视表里用这个字段替代原字段。示例代码:quantity_display = fields.Integer(string='Quantity', compute='_compute_quantity_display') def _compute_quantity_display(self): for rec in self: rec.quantity_display = rec.quantity or 0重载read_group方法处理聚合空值
如果是透视表分组聚合后出现的空值(比如某个分组下没有对应数据),可以重载模型的read_group方法,在返回聚合结果前把空值替换成0。示例代码:@api.model def read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True): group_result = super().read_group(domain, fields, groupby, offset=offset, limit=limit, orderby=orderby, lazy=lazy) for group in group_result: if 'quantity' in group and group['quantity'] is False: group['quantity'] = 0 return group_result调整透视视图的聚合设置
在透视视图的XML配置里,确保Quantity字段使用sum聚合方式,Odoo在sum聚合时会默认将空值按0计算,不过这个只针对聚合场景,已有记录的字段空值还是需要结合前面的方法处理。视图配置示例:<pivot string="Sales Pivot"> <field name="sales_person"/> <field name="quantity" type="measure" sum="true"/> </pivot>
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

