Odoo 自定义表单字段小部件 - 如何显示字段值?
Odoo custom form field widget - how to display field value?
我在 Odoo 中创建了一个自定义小部件,并将其显示在一个表单域中。
我的模板如下所示:
<t t-name="ImageDisplayer">
<img t-att-src="?"/>
</t>
如何将字段的值放入 <img>
标记的 src
属性中?
我们可以这样做
<img t-att-src="kanban_image('model.name', 'image_small', record.id.value)"/>
在哪里
model.name
是 table 名字,
image_small
是一个字段名称,它将 hold/store 二进制类型的数据。
编辑:
要在模板中显示字段值,你可以试试这个
<img t-att-src="record.field_name"/>
在花了一天时间研究源代码后,我找到了解决方案!它并没有真正涉及模板,但是我从默认文本字段小部件的源代码中得到了这个想法,所以我认为它不应该被视为 "hacking".
这是我的自定义小部件 class:
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 框架。
我在 Odoo 中创建了一个自定义小部件,并将其显示在一个表单域中。 我的模板如下所示:
<t t-name="ImageDisplayer">
<img t-att-src="?"/>
</t>
如何将字段的值放入 <img>
标记的 src
属性中?
我们可以这样做
<img t-att-src="kanban_image('model.name', 'image_small', record.id.value)"/>
在哪里
model.name
是 table 名字,
image_small
是一个字段名称,它将 hold/store 二进制类型的数据。
编辑:
要在模板中显示字段值,你可以试试这个
<img t-att-src="record.field_name"/>
在花了一天时间研究源代码后,我找到了解决方案!它并没有真正涉及模板,但是我从默认文本字段小部件的源代码中得到了这个想法,所以我认为它不应该被视为 "hacking".
这是我的自定义小部件 class:
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 框架。