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

Odoo 12中ir.attachment部分记录缺失文件内容(datas)问题咨询

Odoo 12 ir.attachment datas字段为空的可能原因

针对你遇到的部分JSON附件datas字段丢失,但元数据(文件大小、文件名、MIME类型)正常的问题,结合你提供的代码,可能的原因如下:

  • base64编码处理不规范:你使用的base64.encodestring()在Python 3中返回bytes类型,而Odoo的ir.attachment.datas字段要求传入字符串类型。直接将bytes赋值给datas可能导致Odoo内部处理异常,最终存储为空。正确做法需对编码结果解码:file = base64.encodestring(file).decode('utf-8')。另外,编码过程若抛出异常(比如文件含无法处理的字节),当前代码无捕获逻辑,会导致file变量异常,最终存入空值。

  • 文件内容隐性为空:代码中的if file and file_name仅判断file不是False,但如果file是空字节流(比如读取JSON文件时出现IO错误,返回空bytes),判断会通过,编码后的base64字符串为空,最终datas字段为空。

  • 数据库事务回滚:若调用create_attachment的父方法在附件创建后,后续操作抛出异常导致整个事务回滚,理论上附件记录应被完全删除,但在Odoo filestore异步写入等特殊场景下,可能出现附件元数据保留、但datas内容因事务回滚未持久化的情况。

  • 文件系统存储异常:若Odoo配置了附件存储到文件系统(而非数据库),当磁盘空间不足、目录权限不足或文件写入超时,实际文件内容未成功写入filestore,但Odoo已生成附件元数据记录,此时datas字段存的是文件路径,但实际文件不存在,读取时显示为空。

  • 并发操作冲突:多个请求同时对同一个res.partner记录调用create_attachment时,可能出现并发写入冲突。比如某个请求的file参数为空,因并发判断逻辑时序问题成功创建附件,覆盖之前的有效记录,导致datas为空。

  • Odoo 12版本固有bug:Odoo 12的ir.attachment模块存在部分已知bug,比如在关联模型权限限制、批量创建附件等特定场景下,datas字段无法正确持久化。可检查是否有官方补丁或社区修复方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:12:25