1

lading_adapter_ids是模块中的 one2many 字段。

这是代码,都t-out显示为空白。

 <t t-foreach="record.lading_adapter_ids.raw_value" t-as="o">
                                        <t t-out="o.name" />
                                         <t t-if="i % 2 != 0" >
                                            <hr />
                                        </t>
                                        <t t-set="i" t-value="1"/>
                                        <i class="fa fa-location-arrow" title="This is the district" />
                                        <t t-out="o.district" />
                                        <br />
                                        <i class="fa fa-building" title="This is company name" />
                                          <t t-out="o.display_name" />
                                        <br />
                                        <i class="fa fa-map-marker" title="This is the address" />
                                          <t t-out="o.eng_address" />
                                         <br />

                                     </t>
4

1 回答 1

2

不幸的是,您不能使用这些字段。

构建包含模板中使用的格式化记录数据的对象的函数,在和字段raw_value的情况下将 设置为 ids 列表one2manymany2many

从看板查看文档:

每个字段有两个属性 value 和 raw_value,前者是
根据当前用户参数格式化的,后者是来自read()
的直接值(根据用户的 locale 格式化的 date 和 datetime 字段除外)

默认情况下,除非widget指定属性,否则字段将替换为其格式化值,因此您可以定义一个新的小部件,例如many2many_tags更改看板视图中 One2many 字段的行为。

如果您查看FieldMany2ManyTags类,您将看到一个特殊属性fieldsToFetch,用于检索渲染上下文中使用的字段。

kanban_address要基于 One2many 字段的值定义新的小部件:

  • 你需要扩展AbstractWidget
  • 设置要检索的字段
  • 定义一个新模板
  • 更改_render函数以呈现新创建的模板。
  • 最后,在看板视图的字段标签中使用新的小部件。

例子:

1-看板小部件

/** @odoo-module **/
import field_registry from 'web.field_registry';
import AbstractField from 'web.AbstractField'
import  { qweb as QWeb, _t } from 'web.core';

var FieldKanbanAddress = AbstractField.extend({
    custom_template: "kanban_address",
    supportedFieldTypes: ['one2many', 'many2many'],
    fieldsToFetch: {
        name: {type: 'char'},
        district: {type: 'char'},
        display_name: {type: 'char'},
        eng_address: {type: 'char'},
    },

    _render: function () {
        var elements = this.value ? _.pluck(this.value.data, 'data') : [];
        this.$el.html(QWeb.render(this.custom_template, {elements: elements}));
    },
});

field_registry.add('kanban.kanban_address', FieldKanbanAddress);

2- 自定义模板

<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
    <t t-name="kanban_address">
        <t t-foreach="elements" t-as="o">
            
        </t>
    </t>
</templates>

3-widget属性

<field name="move_raw_ids" widget="kanban_address"/>  

4- 在清单中指定 JS 和 XML 文件

'assets': {
    'web.assets_backend': [
        
        '{MODULE_NAME}/static/src/js/kanban_address.js',
    ],
    'web.assets_qweb': [
        '{MODULE_NAME}/static/src/xml/kanban_address.xml',
    ],
},
于 2022-01-18T13:59:38.630 回答