为什么搜索视图只显示 160 个项目?

Why does search view shows only 160 items?

在customer master里面,进入状态的时候点了search more选项。它只列出了 160 个项目,而实际上它包含的更多。所以我检查了一下,发现搜索视图只列出了 160 个项目,甚至主文件包含的还不止这些。

addons/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 中更改值是否安全?或者我怎样才能以其他方式做到这一点?

提前致谢

在“合作伙伴”表单中,如果您的合作伙伴选择了 国家/地区,则“州”字段会强制执行 domain。这意味着如果您选择“美国”作为 国家/地区,那么它只会显示也有 国家/地区的 的“美国”

但是,即使没有选择国家,它仍然会限制中显示的的数量]搜索更多...弹出窗口。

我不确定为什么,但是如果你:

  1. 单击该弹出窗口中的 搜索... 栏 window
  2. Enter(重新搜索列表)

然后它将return所有可用的状态...

这似乎是一个已知问题,没有计划修复(至少修复后不会向后移植到稳定版本)。请参阅这些 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,其中有几个片段。

基本上,解决方案需要覆盖 addons/web/static/src/js/framwork/data.js

中的 name_search 函数
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 导入的任何 view/template。


上一个答案

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

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

备注:

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

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

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

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