产品模板搜索视图错误行为odoo
Product template search view wrong behavior odoo
在产品模板搜索视图中定义了一个字段以按产品属性进行搜索:
<field string="Product Variant" name="product_variant_ids" filter_domain="['|', ('product_variant_ids.name','ilike',self), ('product_variant_ids.attribute_value_ids.name','ilike',self)]"/>
product_variants_ids 是 product.template 中的一个 one2many 字段。当我写一些属性值时,它带来了正确的记录,但是如果我写了属性名称,它什么也没有带来,例如,在我拥有的某些产品的属性页面中:
MEMORY 32gb
COLOR red
如果我键入 32gb,它会带来记录,而如果我键入 MEMORY,则什么也不会带来
谁能帮帮我?我想了解filter_domain
在 search view documentation 中,他们说:
Possible children elements of the search view are:
field
fields define domains or contexts with user-provided values. When
search domains are generated, field domains are composed with one
another and with filters using AND.
Fields can have the following attributes:
...
filter_domain
complete domain to use as the field’s search domain, can
use a self
variable to inject the provided value in the custom domain.
Can be used to generate significantly more flexible domains than
operator
alone (e.g. searches on multiple fields at once)
If both operator
and filter_domain
are provided, filter_domain
takes
precedence.
所以对于你的例子,用这个 filter_domain
:
[
'|',
('product_variant_ids.name','ilike',self),
('product_variant_ids.attribute_value_ids.name','ilike',self)
]
如果您搜索 MEMORY
,它将在两个给定字段之一中进行搜索(对于您的示例,通过等同于 sql 的 field ILIKE '%MEMORY%'
的 ilike)。
product_variants_ids.name 字段
搜索到的值将与product_variants_ids.name
“相似”。
product_variants_ids
is a one2many 到 product.product
.
列表
一个商品的name
就是他的product.template
.
所以这使我们能够通过名称找到 product.template
(类似于 ('name', 'ilike', self)
但只会找到带有变体的 product.template
)。
product_variant_ids.attribute_value_ids.name 字段
product_variant_ids
仍然是 product.product
的列表。 attribute_value_ids
is a many2many 到 product.attribute.value
.
和此 product.attribute.value
is the attribute value 的名称,因此在您给定的情况下 32gb
或 red
.
结论
因此,此过滤器不会找到 MEMORY
或 COLOR
,这些字段可用:
在产品视图中,您可以像这样搜索星期二属性名称(无需更改):
- 做一个
Advanced Search
,
- 正在选择
Product Attributes
contains
memory
,
- 单击
Apply
。
在产品模板搜索视图中定义了一个字段以按产品属性进行搜索:
<field string="Product Variant" name="product_variant_ids" filter_domain="['|', ('product_variant_ids.name','ilike',self), ('product_variant_ids.attribute_value_ids.name','ilike',self)]"/>
product_variants_ids 是 product.template 中的一个 one2many 字段。当我写一些属性值时,它带来了正确的记录,但是如果我写了属性名称,它什么也没有带来,例如,在我拥有的某些产品的属性页面中:
MEMORY 32gb
COLOR red
如果我键入 32gb,它会带来记录,而如果我键入 MEMORY,则什么也不会带来
谁能帮帮我?我想了解filter_domain
在 search view documentation 中,他们说:
Possible children elements of the search view are:
field
fields define domains or contexts with user-provided values. When search domains are generated, field domains are composed with one another and with filters using AND.
Fields can have the following attributes:
...
filter_domain
complete domain to use as the field’s search domain, can use a
self
variable to inject the provided value in the custom domain. Can be used to generate significantly more flexible domains thanoperator
alone (e.g. searches on multiple fields at once)If both
operator
andfilter_domain
are provided,filter_domain
takes precedence.
所以对于你的例子,用这个 filter_domain
:
[
'|',
('product_variant_ids.name','ilike',self),
('product_variant_ids.attribute_value_ids.name','ilike',self)
]
如果您搜索 MEMORY
,它将在两个给定字段之一中进行搜索(对于您的示例,通过等同于 sql 的 field ILIKE '%MEMORY%'
的 ilike)。
product_variants_ids.name 字段
搜索到的值将与product_variants_ids.name
“相似”。
product_variants_ids
is a one2many 到 product.product
.
一个商品的name
就是他的product.template
.
所以这使我们能够通过名称找到 product.template
(类似于 ('name', 'ilike', self)
但只会找到带有变体的 product.template
)。
product_variant_ids.attribute_value_ids.name 字段
product_variant_ids
仍然是 product.product
的列表。 attribute_value_ids
is a many2many 到 product.attribute.value
.
和此 product.attribute.value
is the attribute value 的名称,因此在您给定的情况下 32gb
或 red
.
结论
因此,此过滤器不会找到 MEMORY
或 COLOR
,这些字段可用:
在产品视图中,您可以像这样搜索星期二属性名称(无需更改):
- 做一个
Advanced Search
, - 正在选择
Product Attributes
contains
memory
, - 单击
Apply
。