加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – Odoo 9在哪里将`res`partner`记录的`image`字段实

发布时间:2020-12-13 16:06:51 所属栏目:百科 来源:网络整理
导读:我在Odoo 9 PostgreSQL数据库的res_partner表中找不到image列? Odoo 9在哪里存储这个图像区域? 解决方法 从Odoo 9开始,许多二进制字段已被修改为存储在ir.attachment模型(ir_attachment表)中.这样做是为了从文件系统存储(和重复数据删除属性)中受益,并避免
我在Odoo 9 PostgreSQL数据库的res_partner表中找不到image列? Odoo 9在哪里存储这个图像区域?

解决方法

从Odoo 9开始,许多二进制字段已被修改为存储在ir.attachment模型(ir_attachment表)中.这样做是为了从文件系统存储(和重复数据删除属性)中受益,并避免使数据库膨胀.

这在带有attachment = True参数的二进制字段上启用,因为它是针对res.partner‘s image fields完成的.

激活时,二进制字段的get()和set()方法将在ir.attachment表中为store and retrieve the value.如果查看code,您将看到附件使用以下值来建立原始记录的链接:

> name:二进制字段的名称,例如图片
> res_field:二进制字段的名称,例如图片
> res_model:包含该字段的模型,例如res.partner
> res_id:二进制字段所属记录的ID
>类型:’二进制’
> datas:包含二进制字段内容的虚拟字段,实际存储在磁盘上

因此,如果您想要检索包含ID为32的res.partner图像值的ir.attachment记录,则可以使用以下SQL:

SELECT id,store_fname FROM ir_attachment
WHERE res_model = 'res.partner' AND res_field = 'image' AND res_id = 32;

因为ir_attachment条目默认使用文件系统存储,所以store_fname字段的实际值将为您提供Odoo文件存储中图像文件的路径,格式为’ab / abcdef0123456789′,其中abc …值为SHA- 1个文件的哈希值.这就是Odoo如何实现附件的重复数据删除:具有相同文件的多个附件将映射到磁盘上的同一个唯一文件.

如果您想以编程方式修改图像字段的值,强烈建议使用ORM API(例如write()方法),以避免产生不一致或必须手动重新实现文件存储系统.

参考

>这是original 9.0 commit,它介绍了将二进制字段存储为附件的功能
>以及转换res.partner图像区域的9.0 commit使用它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读