Odoo自定义表单字段小部件 - 如何显示字段值?

时间:2015-08-13 14:30:49

标签: javascript xml openerp odoo odoo-8

我在Odoo中创建了一个自定义小部件,并将其显示在表单字段中。 我的模板如下所示:

<t t-name="ImageDisplayer">
    <img t-att-src="?"/>
</t>

如何将字段的值放入<img>代码src属性?

2 个答案:

答案 0 :(得分:8)

在花了一天的时间挖掘源代码后,我找到了解决方案!它并不真正涉及模板,但我从默认文本字段小部件的源代码中得到了这个想法,所以我认为它不应该被视为&#34; hacking&#34;。

这是我的自定义窗口小部件类:

openerp.mymodule = function(instance, local) {
    instance.ImageDisplayer = instance.web.form.AbstractField.extend({
        template: "ImageDisplayer",
        init: function (view, code) {
            this._super(view, code);
        },
        // The key part:
        render_value: function() {
            this.$el[0].src = this.get("value");
        }
    });
    instance.web.form.widgets.add('ImageDisplayer', 'instance.ImageDisplayer');
}

我的模板现在不包含任何特殊内容:

<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
    <t t-name="ImageDisplayer">
        <img />
    </t>
</templates>

像魅力一样工作。每当我在服务器端进行更改时,它甚至会更新页面。

Odoo文档真的应该更健谈!!!

更新:答案适用于Odoo 8.在Odoo 9中可能会略有不同,因为他们已经在新版本中修改了UI框架。

答案 1 :(得分:1)

我们可以这样做

<img t-att-src="kanban_image('model.name', 'image_small', record.id.value)"/>

其中

model.name是表名,

image_small是一个字段名称,用于保存/存储二进制数据类型。

编辑:

要在模板中显示字段的值,您可以尝试使用此

<img t-att-src="record.field_name"/>