odoo16m2o修改

无聊小计

前言

在odoo16中,m2o字段,被选择的时候,默认是展示其display_name,但是在很多时候,display_name有很多相似性,不能快速区别,到底选择那一条数据,所以在我无聊之下,研究了一下m2o的展示方式。顺便做了一下测试的展示方式

实现

研读了odoo16代码之后,m2o的下拉框,是用ul标签展示的,每一条记录使用li标签展示,因为可以从这里入手,

<ul class="o-autocomplete--dropdown-menu dropdown-menu ui-widget ui-autocomplete show" t-on-mousedown.prevent="" t-ref="sourcesList">
                    <t t-foreach="sources" t-as="source" t-key="source.id">
                        <t t-if="source.isLoading">
                            <li class="o-autocomplete--dropdown-item ui-menu-item">
                                <a href="#" class="dropdown-item ui-menu-item-wrapper">
                                    <i class="fa fa-spin fa-circle-o-notch" /> <t t-esc="source.placeholder" />
                                </a>
                            </li>
                        </t>
                        <t t-else="">
                            <t t-foreach="source.options" t-as="option" t-key="option.id">
                                <li
                                    class="o-autocomplete--dropdown-item ui-menu-item"
                                    t-att-class="option.classList"
                                    t-on-mouseenter="() => this.onOptionMouseEnter([source_index, option_index])"
                                    t-on-mouseleave="() => this.onOptionMouseLeave([source_index, option_index])"
                                    t-on-click="() => this.onOptionClick([source_index, option_index])"
                                >

以上代码仅仅是部分,只是展示一下,
那么可以将其改成表格形式展开,那么就更直观了
展示效果demo
下拉的时候,展示原m2o字段的几个列,然后展示相应的数据,
其中需要修改的代码部分在autocomplete.js autocomplete.xml relational_utils.js里,后端也需要更改

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值