Odoo 显示图像替代

Odoo display images alternative

Odoo ORM 有二进制类型字段可以保存图像。这些图像的问题在于它们以 HTML 作为 base64 编码交付。这些加起来达到 HTML 大小,无法缓存或通过 CDN 传送。

我需要添加图片上传到模块。然后这些图像将显示在网站上。有替代方法吗?型号代码如下:

class BannerImage(models.Model):
    _name = 'banner.image'
    _description = 'Banner Image'

    image_desktop = fields.Binary('Desktop Image', attachment=True)
    image_mobile = fields.Binary('Mobile Image', attachment=True)

    start_date = fields.Date("Start Date")
    end_date = fields.Date("End Date")

    action = fields.Char("URL")
    desc = fields.Text("Additional Description")
    banner = fields.Many2one('banner.banner', "Banner")

后端声明如下:

<record id="action_view_banner_images" model="ir.actions.act_window">
  <field name="name">Banner Images</field>
  <field name="res_model">banner.image</field>
  <field name="view_mode">tree,form</field>
</record>

这些在 HTML 模板中使用如下:

<div class="banners">
    <t t-foreach="banners.images" t-as="banner_image">
        <img class="media-object img-responsive" t-attf-src="data:image/*; base64,{{banner_image.image_desktop}}" />
    </t>
</div>

是否有另一种调用这些图像的方法,可能是使用 URL?

您可以使用图片 "t-attf-src=/web/binary/image?model=ir.attachment&field=datas&id=(your img ID)" 而不是 "t-attf-src="data:image/*;.... "