如何在Odoo中通过create方法将Binary字段值传递至其他字段?
Odoo中create方法传递Binary字段值的解决方案
Binary字段要求传入base64编码的字符串,不能直接传递原始文件字节或文件对象,这是导致字段为空的核心原因。
正确的赋值步骤及示例代码:
- 读取目标文件的字节内容;
- 使用
base64模块将字节内容编码为base64字符串; - 在
create方法的字段字典中传入该字符串。
import base64 # 读取文件并转base64编码 with open("/path/to/your/report.pdf", "rb") as file: report_base64 = base64.b64encode(file.read()).decode("utf-8") # 创建新记录时传递Binary字段值 self.env["your.model.name"].create({ "name": "项目报告", "project_report": report_base64, # 对应你的Binary字段名 # 其他必填字段... })
- 常见排查点:
- 检查文件路径是否正确,确保文件存在且当前用户有读取权限;
- 确认
create字典中的字段名与模型定义的Binary字段名完全一致(注意大小写、拼写); - 验证base64编码是否正确:可以尝试将编码后的字符串解码,看是否能还原原始文件内容;
- 检查当前用户是否拥有该模型的创建权限,以及该Binary字段的写入权限。
内容的提问来源于stack exchange,提问作者Enes Kara
相关产品推荐
相关产品推荐

