odoo 15中pos中可用的过滤器产品



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中可用的产品例子:

  1. 如果您正在使用product_id域,属于product.template型号,可以只过滤产品可用[('available_in_pos', '=', True)]:
product_template = self.env['product.template'].search([('available_in_pos', '=', True)])
  1. 如果您正在使用product_id域,属于product.product型号,可以过滤所有产品(包括产品变体)使用以下域[('available_in_pos', '=', True)],或者您可以使用使用此域[('product_tmpl_id.available_in_pos', '=', True)]
  2. 的产品模板过滤它
product = self.env['product.product'].search([('available_in_pos', '=', True)])

product = self.env['product.product'].search([('product_tmpl_id.available_in_pos', '=', True)])

最新更新