Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据odoo中产品标识的变体筛选产品标识2?_Python_Xml_Openerp_Odoo 8 - Fatal编程技术网

Python 根据odoo中产品标识的变体筛选产品标识2?

Python 根据odoo中产品标识的变体筛选产品标识2?,python,xml,openerp,odoo-8,Python,Xml,Openerp,Odoo 8,我有两个字段,类型有很多种:product_id和product_id2,我尝试的是过滤product_id2,只获取属于product_id的变体。 前任: 产品(黑色) 产品(红色) 产品(白色) 选择product(黑色)时,仅使用product(红色)和product(白色)过滤product_id2您可以使用域过滤器进行过滤 在模型的py中: @api.onchange('product_id') def onchange_product_id(self): domain =

我有两个字段,类型有很多种:product_id和product_id2,我尝试的是过滤product_id2,只获取属于product_id的变体。 前任: 产品(黑色) 产品(红色) 产品(白色)


选择product(黑色)时,仅使用product(红色)和product(白色)过滤product_id2

您可以使用域过滤器进行过滤

在模型的py中:

@api.onchange('product_id')
def onchange_product_id(self):

    domain = {}
    if self.product_id:
        products = self.env['product.product'].search([('product_tmpl_id', '=', self.product_tmpl_id), ('id', '!=', self.id)])

        self.product_id2 = None
        domain['product_id2'] = [('id', 'in', products.ids)]

    return {'domain': domain}
因此,每次选择产品id时:

  • 您的product_id2字段将为空
  • 您的product_id 2字段将仅针对其他变体进行筛选(product_id中的变体除外)

product\u id是与product.template的关系,product\u id2是与product.product的关系?两者都是与product.product的关系,我认为它应该是一个onchange\u功能。问题是,product.product没有变体。产品。产品是变体。我要做的是,将product_id作为product.template,并使用product_id的变体筛选product_id 2。无论如何,如果您确实需要两者作为product.product,我可以帮助您编写代码。你需要做的是在product_id2中设置一个域过滤器,该过滤器的功能可以满足你的需要。是的,作为product.product,我需要两者,其背后的原因是产品变体的库存变动,因此当我选择一个变体过滤器时,产品_id2与其他变体属于同一产品,如上面的示例所示,提前感谢:)感谢dccdany,但每次选择produt\u id时,我都会收到错误:“我的模型”对象没有属性“\u id”,我正在使用旧的api。为什么?如果您正在使用8,请使用新的。此错误是否在“域['product_id2']=[('id','in',products.ids)]”行中?。不管怎样,我想我在搜索中犯了一个错误,那不是赛尔夫。尝试使用self.env['product.product']。我只是修改了答案