You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo13中Line行项唯一Item数量统计问题及代码优化需求

解决Odoo 13中唯一Item数量统计问题

我明白你的需求了——你要统计的是唯一Item的个数,而不是所有行项的数量或者每个Item的数量之和。你的原代码错误地累加了每个Item的quantity字段值,这就是为什么得到7而不是2的核心原因。

修正后的代码

@api.depends('move_line_ids.item_id')
def get_item_number(self):
    """ Compute the count of unique items. """
    for rec in self:
        # mapped('item_id') 返回去重后的item_id记录集,直接取长度就是唯一Item的数量
        unique_item_count = len(rec.move_line_ids.mapped('item_id'))
        rec.item_number = unique_item_count

代码解释

  1. 自动去重:Odoo的mapped()方法返回的记录集会自动基于数据库ID去重,所以rec.move_line_ids.mapped('item_id')能直接得到所有不重复的Item记录。
  2. 统计逻辑:直接获取这个去重后记录集的长度len(),就是你需要的唯一Item总数——比如desk和box各算1个,结果为2;新增不重复的Item时,长度会自动递增,完全满足需求。
  3. 边界处理:如果move_line_ids为空,代码会返回0,逻辑严谨无遗漏。

内容的提问来源于stack exchange,提问作者SH EB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 10:27:32