Zee*_*jum 4 postgresql openerp
我在Odoo 9 PostgreSQL数据库中找不到表中的image列res_partner?Odoo 9在哪里存储这个图像区域?
odo*_*ony 16
从Odoo 9开始,许多binary字段已被修改为存储在ir.attachment模型(ir_attachment表格)中.这样做是为了从文件系统存储(和重复数据删除属性)中受益,并避免使数据库膨胀.
这与二进制领域启动attachment=True参数,因为它给毁了res.partner的image领域.
当激活时,get()和set()所述二进制字段的方法存储和检索的值在ir.attachment表中.如果查看代码,您将看到附件使用以下值来建立原始记录的链接:
name:二进制字段的名称,例如 imageres_field:二进制字段的名称,例如 imageres_model:包含该字段的模型,例如 res.partnerres_id:二进制字段所属记录的IDtype: 'binary'datas:具有二进制字段内容的虚拟字段,实际存储在磁盘上因此,如果您要检索包含ID为32 ir.attachment的imageof of of record的记录res.partner,则可以使用以下SQL:
SELECT id, store_fname FROM ir_attachment
WHERE res_model = 'res.partner' AND res_field = 'image' AND res_id = 32;
Run Code Online (Sandbox Code Playgroud)
由于ir_attachment条目默认使用文件系统存储,因此store_fname字段的实际值将为您提供Odoo文件存储中图像文件的路径,其形式'ab/abcdef0123456789'为abc...值为文件的SHA-1哈希值.这就是Odoo如何实现附件的重复数据删除:具有相同文件的多个附件将映射到磁盘上的同一个唯一文件.
如果您想以image编程方式修改字段的值,强烈建议使用ORM API(例如write()方法),以避免产生不一致或必须手动重新实现文件存储系统.
参考
| 归档时间: |
|
| 查看次数: |
6649 次 |
| 最近记录: |