将您的 xml 更改为
<tree>
<field name="issue" widget="html"/>
</tree>
在 odoo v9 中,要在树视图中显示渲染的 HTML 内容,您必须覆盖 Web 模块“/web/static/src/js/views/list_view.js”中的文件并声明一个变量:
var ColumnHtml = Column.extend({
_format: function (row_data, options) {
return formats.format_value(row_data[this.id].value, this,options.value_if_empty);
}
});
将此变量添加到 list_widget_registry 变量,例如:
list_widget_registry.add('field', Column).........add('field.html', ColumnHtml);
将其添加到您的自定义模块.js:
odoo.define('your_custom_module.ListView', function (require) {
"use strict";
var ListView = require('web.ListView');
var formats = require('web.formats');
var core = require('web.core');
var list_widget_registry = core.list_widget_registry;
var ColumnHtml = ListView.Column.extend({
format: function (row_data, options) {
return formats.format_value(row_data[this.id].value, this,options.value_if_empty);
},
});
list_widget_registry.add('field.html', ColumnHtml);
});
我在 15.0 中遇到了这个问题。
t-raw
现在在 QWeb 中已过时,t-out
是唯一可用的,因此我们想要输出的任何内容都必须是纯文本,或者包装到 markupsafe.Markup()
中,这正是 fields.Html()
的作用。然而,正如 OP 所演示的,以这种方式声明的字段会添加额外的 <p>
标签。
要禁用此功能,请添加
sanitize=False
,如下所示:
issue = fields.Html('name of field', sanitize=False)