2017-06-09 64 views
0

Odoo ORM具有二进制类型字段可容纳图像。这些图像的问题在于,它们是以base64编码的HTML形式提供的。这些加起来HTML大小,不能缓存或通过CDN传递。Odoo显示图像替代

我需要添加上传到模块的图像。这些图像将显示在网站上。有没有其他的方法呢?以下型号代码:

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> 

有另一种方式来调用这些图像,可能使用网址?

回答

1

你可以使用像 “T-AttF设定-SRC =/WEB /二/图像?模型= ir.attachment &场= DATAS & ID =(您的IMG ID)”,而不是 “T-AttF设定-SRC =”数据:图像/ *; ......“?。

+0

是否有一种方式来获得从模型本身的连接ID然后,它将可能在模板指 – user3295878

+0

得到了它,我使用它是这样的:”叔AttF设定-SRC = /网络/二进制/图像?模型= banner.image&字段= image_desktop&ID = {{banner_image.id}}” – user3295878