前言
Odoo实现了一些Mixins基础对象模型。开发人员可以通过继承(_inherit)的方式,将其添加在自己的对象模型中,降低开发工作量。之后将通过一系列的文章和示例对Mixins类进行讲解说明。本文主要讲解的是image.mixin。
一、image.mixin
通过Odoo源码可以看出,image.mixin定义了不同分辨率的图片字段,并将对应字段数据存储在附件中。当我们其它数据模型中涉及到图片业务时,可以继承这个mixin。
二、使用示例
1.模型
创建一个员工模型。因为员工通常需要展示人员的头像,则在模型中继承image.mixin。代码如下(示例):
class HrEmployeePrivate(models.Model):
_name = "hr.employee"
_description = "Employee"
_order = 'name'
_inherit = ['hr.employee.base', 'image.mixin']
_mail_post_access = 'read'
2.表单视图
代码如下(示例):
<field name="image_1920" widget='image' class="oe_avatar" options='{"zoom": true, "preview_image":"image_128"}'/>
界面显示(示例):
widget=‘image’ 图片字段是以bytes类型存储在ir.attachment模型。界面需要引用Odoo封装好的小部件,以图片形式展示。
options设置widget的一些属性:
- “preview_image”:“image_128” 当前图片字段以什么样的分辨率字段显示、图片src路径
- “zoom”: true 当鼠标停留在图片字段上时,类似显微镜效果显示。示例如下图所示: