pos模块扩展product.template
,增加available_in_pos
字段。在选择产品的选择字段中,我想只过滤pos中可用的产品。
我尝试域[('product_tmpl_id.available_in_pos', '=', True)]
,但我得到这个错误
Unknown field "product.template.available_in_pos" in domain of <field name="product_id"> ([('product_tmpl_id.available_in_pos', '=', True)]))
有人知道我是怎么做到的吗?
产品有两个模型,第一个是product.template
,它是产品的模板,第二个是product.product
,它继承了product.template
的所有数据结构,这种继承称为delegation inheritance
。
为产品使用两个模型的原因之一是使用product variants
,您将发现一个产品模板,但存储在product.product
中的相同产品模板的许多产品变体
pos模块扩展product.template
并添加available_in_pos
字段,因此由于delegation inheritance
,该字段将在product.product
模型中可用。
因此,您可以使用此域[('available_in_pos', '=', True)]
筛选pos中可用的产品例子:
- 如果您正在使用
product_id
域,属于product.template
型号,可以只过滤产品可用[('available_in_pos', '=', True)]
:
product_template = self.env['product.template'].search([('available_in_pos', '=', True)])
- 如果您正在使用
product_id
域,属于product.product
型号,可以过滤所有产品(包括产品变体)使用以下域[('available_in_pos', '=', True)]
,或者您可以使用使用此域[('product_tmpl_id.available_in_pos', '=', True)]
的产品模板过滤它
product = self.env['product.product'].search([('available_in_pos', '=', True)])
或
product = self.env['product.product'].search([('product_tmpl_id.available_in_pos', '=', True)])