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
相关产品推荐
相关产品推荐

