#odoo #qweb #odoo-13
#odoo #qweb #odoo-13
Вопрос:
Я пытаюсь настроить представление kanban на 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
в то же время мне нужно создать класс внутри каждого поля kanban с именем каждого category_id что-то вроде
<div class="oe_kanban_details category_1 category_2">
...
Спасибо
Ответ №1:
Выполняется цикл по 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 записи kanban, чтобы получить 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 amp;amp; 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);
},
});
Затем используйте его в представлении kanban следующим образом:
<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>
Комментарии:
1. Большое вам спасибо. Все достаточно ясно, я изучу это. Только одна вещь, показывающая данные внутри this.recordData я не могу видеть свои пользовательские поля (одно из этих many2many), созданные на res.partner почему?