首页 > 解决方案 > 看板视图继承与 QCode

问题描述

我正在尝试自定义 res.partner 上的看板视图

我想列出与联系人关联的所有 category_id而不使用

<field name="category_id"  widget="many2many_tags" options="{'color_field': 'color', 'no_create_edit': True}" />

我尝试使用 Qwep t-foreach 循环但不起作用,为什么?

<li t-foreach="record.category_id" t-as="item">
    <t t-esc="item_value"/>
</li>

这个印刷品

many2many

false

false

[object Object]

false

false

res.users

false

true

false

true

Venditore

[object Object]

7,6

2record

我需要打印 res.partner.category 的名称

同时我需要在每个看板框内创建一个类,其名称为每个 category_id 之类的

<div class="oe_kanban_details category_1 category_2">
 ...

谢谢

标签: odooqwebodoo-13

解决方案


您正在循环记录category_id属性。你得到这个结果是因为你使用了特殊变量$as_value,这些是以下属性的实际值。

type
change_default
company_dependent
context
depends
domain
manual
readonly
relation
required
searchable
sortable
store
string
views
raw_value
value

raw_value包含记录集,是显示记录数的字符串ids

您可以尝试覆盖看板记录 qweb 上下文以从对象获取category_id数据。[{'color':, 'display_name':, 'id': }, ...]recordData

例子

var KanbanRecord = require('web.KanbanRecord');

KanbanRecord.include({
     _get_M2M_data: function (field) {
        var categories = [];
        if (field in this.recordData && this.recordData[field].data) {
            categories = this.recordData.category_id.data;
        }
        return categories;
     },
     _setState: function (recordState) {
        var self = this;
        this._super(recordState);
        self.qweb_context['get_m2m_data'] = self._get_M2M_data.bind(self);
    },
});

然后在看板视图中使用它,如下所示:

<t t-foreach="get_m2m_data('category_id')" t-as="category_data">
    <t t-esc="category_data.data['display_name']"/>
</t>

使用 field 标签时,使用以下代码可以得到类似的结果:

<div class="o_kanban_tags_section oe_kanban_partner_categories">
    <span class="oe_kanban_list_many2many">
        <div class="o_field_many2manytags o_field_widget o_kanban_tags">
            <t t-foreach="get_m2m_data('category_id')" t-as="category_data">
                <span t-att-class="'o_tag o_tag_color_'+ category_data.data['color']"><span></span><t t-esc="category_data.data['display_name']"/>
                </span>
            </t>
        </div>
    </span>
</div>  

推荐阅读