You need to enable JavaScript to run this app. Odoo 8统计ir_attachment附件数量并在stock.production.lot展示的实现问题
优惠活动
大模型
产品
解决方案
定价
更多

Odoo 8统计ir_attachment附件数量并在stock.production.lot展示的实现问题

Odoo 8 批次模型关联附件数量统计实现问题排查与修复

现有代码问题

  • 赋值对象错误:compute方法中将count_attachment字段赋值给了查询到的ir_attachment记录,该字段是定义在stock.production.lot模型上的,应该给当前遍历的批次对象赋值
  • 统计逻辑错误:原有逻辑计算的是附件文件名的字符长度,需求是统计关联附件的总数量,直接取搜索结果的记录数即可
  • 字段类型不合理:附件数量为整数类型,不需要使用Float浮点型,应该改用Integer类型
  • 搜索条件缺失:只过滤res_id会匹配所有模型同ID的附件,必须补充res_model条件限定只匹配批次模型的附件

正确实现代码

Python 模型代码

class stock_production_lot(models.Model):
    _inherit = 'stock.production.lot'

    @api.multi
    def get_attachment_info(self):
        for lot in self:
            # 补充res_model过滤条件,只统计当前批次关联的附件
            attachment_count = self.env['ir.attachment'].search_count([
                ('res_model', '=', 'stock.production.lot'),
                ('res_id', '=', lot.id),
                ('datas_fname', '!=', False) # 可选过滤:排除没有文件名的无效附件
            ])
            lot.count_attachment = attachment_count

    # 改用Integer类型存储附件数量
    count_attachment = fields.Integer(string='Total Attachment', compute='get_attachment_info')

视图代码(原有代码无需修改,可正常使用)

<field name="count_attachment" />

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 01:45:06