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

Odoo14搜索视图新增qty_available字段无法支持文字搜索如何解决

实现可行性说明

可以实现该需求。

问题根因

你当前配置的qty_available是浮点型数值字段,Odoo搜索视图默认逻辑为:仅当用户输入内容和字段类型匹配时,才会触发对应字段的过滤规则。输入文本内容时会跳过数值类型字段的匹配,因此你输入“available”不会触发预先定义的filter_domain。

解决方案

方案1:新增搜索过滤器(符合Odoo原生交互规范,和Odoo10效果完全一致)

修改你的搜索视图XML代码,新增显式过滤器,Odoo搜索框会自动匹配过滤器的string属性值:

<record id="product_search_ventas_plus" model="ir.ui.view">
    <field name="name">product.template.search.heredado</field>
    <field name="model">product.template</field>
    <field name="inherit_id" ref="product.product_template_search_view"/>
    <field name="arch" type="xml">
        <xpath expr="//field[@name='attribute_line_ids']" position="after"> 
               <field name="qty_available" string="Available Products" filter_domain="[('qty_available','&gt;',0)]"/>
               <!-- 新增过滤器,输入Available关键词即可匹配到该过滤规则 -->
               <filter string="Available" name="filter_available" domain="[('qty_available','>',0)]"/>
        </xpath> 
    </field>
</record>

修改完成后升级模块,在搜索框输入“available”就会自动弹出对应过滤选项,选中后即可筛选出库存大于0的产品。

方案2:自定义搜索逻辑(输入关键词直接触发过滤,无需手动选择)

如果需要输入关键词后直接触发过滤,不需要额外点击选中,可以通过Python自定义字段的搜索逻辑:

  1. 扩展product.template模型,新增搜索方法:
from odoo import models, fields

class ProductTemplate(models.Model):
    _inherit = 'product.template'

    qty_available = fields.Float(search='_search_qty_available')

    def _search_qty_available(self, operator, value):
        if isinstance(value, str) and 'available' in value.lower():
            return [('qty_available', '>', 0)]
        return [('qty_available', operator, value)]
  1. 原有XML搜索视图代码无需修改,升级模块后即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:39:02