You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo 14如何修改SearchPanel的DEFAULT_LIMIT并添加至设置

Odoo 14 SearchPanel 默认限制值修改及系统设置配置

一、后端配置(新增系统设置可配置字段)

先在系统设置中添加可自定义的字段,让用户能按需调整SearchPanel的默认显示条数:

  1. 在模块的models/res_config_settings.py中新增字段:
from odoo import models, fields, api

class ResConfigSettings(models.TransientModel):
    _inherit = 'res.config.settings'

    search_panel_default_limit = fields.Integer(string='SearchPanel 默认显示条数', default=500)

    def get_values(self):
        res = super(ResConfigSettings, self).get_values()
        res.update(search_panel_default_limit=int(self.env['ir.config_parameter'].sudo().get_param('your_module_name.search_panel_default_limit', 500)))
        return res

    def set_values(self):
        super(ResConfigSettings, self).set_values()
        self.env['ir.config_parameter'].sudo().set_param('your_module_name.search_panel_default_limit', self.search_panel_default_limit or 500)
  1. 在模块的views/res_config_settings_views.xml中把配置项添加到系统设置页面:
<odoo>
    <record id="res_config_settings_view_form_inherit" model="ir.ui.view">
        <field name="name">res.config.settings.view.form.inherit.search.panel.limit</field>
        <field name="model">res.config.settings</field>
        <field name="inherit_id" ref="base.res_config_settings_view_form"/>
        <field name="arch" type="xml">
            <xpath expr="//div[@id='general']" position="inside">
                <div class="col-xs-12 col-md-6 o_setting_box">
                    <div class="o_setting_right_pane">
                        <label for="search_panel_default_limit"/>
                        <div class="text-muted">
                            设置SearchPanel视图默认显示的最大条目数
                        </div>
                        <div class="content-group">
                            <field name="search_panel_default_limit" class="oe_inline"/>
                        </div>
                    </div>
                </div>
            </xpath>
        </field>
    </record>
</odoo>

二、前端JS扩展ActionModel

通过扩展ActionModel,替换SearchPanel的默认限制值,优先读取系统设置中的配置:

在模块的static/src/js/search_panel_limit_extension.js中编写扩展代码:

const ActionModel = require("web/static/src/js/views/action_model.js");
const session = require('web.session');

class SearchPanelModelExtensionChangeLimit extends ActionModel.Extension {
    async prepareState() {
        // 执行父类原有逻辑
        await super.prepareState(...arguments);
        // 从系统参数获取配置的限制值
        const limit = await session.rpc('/web/dataset/call_kw', {
            model: 'ir.config_parameter',
            method: 'get_param',
            args: ['your_module_name.search_panel_default_limit', 500],
            kwargs: { context: session.user_context }
        });
        // 覆盖SearchPanel的默认limit
        if (this.state.searchPanel) {
            this.state.searchPanel.limit = parseInt(limit, 10);
        }
    }
}

// 注册扩展到ActionModel
ActionModel.include({
    constructor: function () {
        this._super(...arguments);
        this.registerExtension(SearchPanelModelExtensionChangeLimit);
    }
});

三、加载JS文件

在模块的views/assets.xml中配置JS文件的加载:

<odoo>
    <template id="assets_backend" name="search panel limit assets" inherit_id="web.assets_backend">
        <xpath expr="." position="inside">
            <script type="text/javascript" src="/your_module_name/static/src/js/search_panel_limit_extension.js"></script>
        </xpath>
    </template>
</odoo>

四、模块安装与测试

  1. 升级或安装目标模块
  2. 进入「设置」-「通用设置」,找到新增的SearchPanel配置项,调整数值
  3. 打开带有SearchPanel的视图(如列表视图侧边搜索面板),验证默认显示条数是否生效

内容的提问来源于stack exchange,提问作者Makis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 14:02:41