为什么搜索视图只显示 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
。这意味着如果您选择“美国”作为 国家/地区,那么它只会显示也有 国家/地区的 州 的“美国”
但是,即使没有选择国家,它仍然会限制中显示的州的数量]搜索更多...弹出窗口。
我不确定为什么,但是如果你:
- 单击该弹出窗口中的 搜索... 栏 window
- 按 Enter(重新搜索列表)
然后它将return所有可用的状态...
这似乎是一个已知问题,没有计划修复(至少修复后不会向后移植到稳定版本)。请参阅这些 Github 问题报告(如下)。这在 Odoo 11 上仍然存在,甚至在 demo.odoo.com
有一些方法可以解决此问题,但它需要修改 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,默认情况下它会显示更多或更少的记录。
- 启用开发者模式
- 导航到要从中删除限制的树视图
- 单击“调试”按钮(Odoo 右上角的错误图标,用户名旁边)
- 点击“编辑操作”
- 更改“限制”值并保存
- 限制为 0 或 -1 应该可以实现无限列表,但您可能需要测试几个不同的值以查看哪个最有效。
- 如果这些方法效果不佳,那么您可以将限制更改为 999999 或更高的值。
备注:
您还可以通过 XML 在操作上定义 limit
更改。
<field name=“limit”>0</field>
您也可以直接在 tree
元素上设置 limit
属性。
同样,您可能需要对此进行测试以查看哪个值提供无限列表,但您可以像这样使用它(在树视图 XML 定义中):
<tree id=“...” string=“...” limit=“0”/>
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
。这意味着如果您选择“美国”作为 国家/地区,那么它只会显示也有 国家/地区的 州 的“美国”
但是,即使没有选择国家,它仍然会限制中显示的州的数量]搜索更多...弹出窗口。
我不确定为什么,但是如果你:
- 单击该弹出窗口中的 搜索... 栏 window
- 按 Enter(重新搜索列表)
然后它将return所有可用的状态...
这似乎是一个已知问题,没有计划修复(至少修复后不会向后移植到稳定版本)。请参阅这些 Github 问题报告(如下)。这在 Odoo 11 上仍然存在,甚至在 demo.odoo.com
有一些方法可以解决此问题,但它需要修改 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,默认情况下它会显示更多或更少的记录。
- 启用开发者模式
- 导航到要从中删除限制的树视图
- 单击“调试”按钮(Odoo 右上角的错误图标,用户名旁边)
- 点击“编辑操作”
- 更改“限制”值并保存
- 限制为 0 或 -1 应该可以实现无限列表,但您可能需要测试几个不同的值以查看哪个最有效。
- 如果这些方法效果不佳,那么您可以将限制更改为 999999 或更高的值。
备注:
您还可以通过 XML 在操作上定义
limit
更改。<field name=“limit”>0</field>
您也可以直接在
tree
元素上设置limit
属性。同样,您可能需要对此进行测试以查看哪个值提供无限列表,但您可以像这样使用它(在树视图 XML 定义中):
<tree id=“...” string=“...” limit=“0”/>