如何根据odoo中另一个字段的值过滤一个Many2one字段

How to filter one Many2one field based on value of another in odoo

我的模型中有这些字段:

seller = fields.Many2one('res.partner', string="Select Seller",domain="[('supplier','=',True)]")
products= fields.Many2one('product.template', string="Select Product" )

现在,我需要在用户选择卖家时过滤第二个字段(第一个字段) 如何在更改时设置域。

我正在尝试做类似的事情,

@api.onchange('seller')
    def onchange_field_seller(self):
        res = {}
        if self.seller:
            # return {'domain':{'product':[//what do i add here//]}}
        return res

我正在使用 many2many 字段在卖家创建表单中创建产品。

product_details = fields.Many2many('product.template',string="Products")

(请注意,此字段的表单与上述问题中的表单不同)。 我试图只获取在我创建卖家时创建的那些产品条目 entry.Im 真的很困惑,我该怎么做?

在您的情况下,您不能在产品 ID 上使用 "dynamic" 域,而更多地使用 pre-defined 域。

@api.onchange('seller')
def onchange_field_seller(self):
    if self.seller:
        # filter products by seller
        product_ids = self.seller.product_details.ids
        return {'domain': {'product': [('id', 'in', product_ids)]}}
    else:
        # filter all products -> remove domain
        return {'domain': {'product': []}}