【问题标题】:Why does search view shows only 160 items?为什么搜索视图只显示 160 项?
【发布时间】:2018-05-03 10:52:56
【问题描述】:

在客户大师中,当我进入状态时,我点击了搜索更多选项。它仅列出了 160 个项目,其中实际包含的项目不止这些。所以我检查它发现搜索视图只列出了 160 个项目,即使主文件包含的项目也不止这些。

插件/web/static/src/js/views/form_common.js

dataset.name_search(search_val, self.build_domain(), 'ilike', 160).done(function(_data) {
    self._search_create_popup("search", _data);
}        `

将 160 更改为 161 时,搜索表单显示 161 项。

那么我如何将其设置为无限制(即与那里的项目一样多),而且在 Odoo 中更改值是否安全?或者我该如何以其他方式做到这一点?

提前致谢

【问题讨论】:

    标签: javascript python-2.7 odoo odoo-10


    【解决方案1】:

    在合作伙伴表单上,如果您的合作伙伴选择了他们的国家,则“州”字段有一个domain。这意味着如果您选择“美国”作为 Country,那么它只会显示 States 也有 Country 为“United States” "

    但是,即使没有选择Country,它仍然会限制Search more...中显示的States的数量弹出窗口。

    我不知道为什么,但如果你:

    1. 点击弹出窗口中的搜索...
    2. Enter(重新搜索列表)

    然后它会返回所有可用的States...

    这似乎是一个没有计划修复的已知问题(至少在修复后不向后移植到稳定版本)。请参阅这些 Github 问题报告(如下)。这在 Odoo 11 上仍然存在,即使在 demo.odoo.com

    1. Search more unpredictable
    2. [V8] only 80 of 160 taxes are shown: reality 2651

    有一些方法可以解决这个问题,但它需要修改 JavaScript(正如您在问题中提到的那样,您可能已经对此有所了解)。你可以在 Odoo 论坛上看到this question,里面有几个 sn-ps。

    基本上,该解决方案需要覆盖name_search 函数之外的addons/web/static/src/js/framwork/data.js

    name_search: function (name, domain, operator, limit) {
        # This is the magic
        limit = 0;
        # Just the above line
        return this._model.call('name_search', {
            name: name || '',
            args: domain || false,
            operator: operator || 'ilike',
            context: this._model.context(),
            limit: limit || 0
        });
    },
    

    注意:这将全局影响您的所有 Odoo。如果您想将其限制为仅一种形式(或某些其他条件),那么您必须使用用于定义 JavaScript 导入的任何视图/模板来执行此操作。


    上一个答案

    修改它的正常方法是在 XML 或 GUI 中更改默认的limit of a Window Action,默认情况下会显示更多或更少的记录。

    1. 启用开发者模式
    2. 导航到要从中删除限制的树视图
    3. 单击“调试”按钮(Odoo 右上角的错误图标,用户名旁边)
    4. 点击“编辑操作”
    5. 更改“限制”值并保存
      • 0 或 -1 的限制应该可以实现无限列表,但您可能需要测试几个不同的值,看看哪个效果最好。
      • 如果这些都不能正常工作,那么您可以将 Limit 更改为 999999 或更高的值。

    注意事项:

    1. 您还可以在 Action 上通过 XML 定义 limit 更改。

       <field name=“limit”>0</field>
      
    2. 您也可以直接在tree 元素上设置limit 属性。

      同样,您可能必须对此进行测试以查看哪个值提供了无限列表,但您可以像这样使用它(在树视图 XML 定义中):

       <tree id=“...” string=“...” limit=“0”/>
      

    【讨论】:

    • 我编辑了我的问题。请参阅随附的屏幕截图。我需要将 160 更改为无限
    • 好的,所以我认为这个问题完全是另外一回事。如果可以,请检查该字段以查看它是否定义了一些 domain。如果需要,我将在几个小时内给出更详细的答复。
    • 没有设置域。问题出在 odoo 中,它设置为 160。如果我将该值更改为 200,我已经在问题中提到了文件和行,搜索表单将显示 0 之间的项目-200。那么有没有办法继承js文件或者覆盖这个文件呢?如果是这样,那该怎么做
    • @HVH 答案已更新。您可以对核心文件进行更改以查看差异,但我强烈建议您不要对核心文件进行任何永久性更改。相反,您应该花时间在第三方模块中进行更改。
    猜你喜欢
    • 1970-01-01
    • 2019-06-30
    • 2020-05-13
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 2021-01-07
    相关资源
    最近更新 更多