如何将外部标识传递给域过滤器

时间:2015-09-10 20:37:26

标签: openerp odoo odoo-8

我有一个Many2One字段接受我的模型中的产品,但我想使用所述模板外部id(XML id)将此字段限制为特定的产品模板。

我试过这个没有成功:

#This piece of code doesn't work
the_product = fields.Many2one('product.product', 
                  domain = [('product_tmpl_id','=', "ref('the_package.the_external_id')")])

我该怎么做?

2 个答案:

答案 0 :(得分:3)

此问题的解决方案是使用返回过滤器参数的函数。这样,我们可以访问函数体中的self变量,因此,我们可以使用它来搜索特定的外部ID。

@api.model
def _get_domain(self):
    # We have access to self.env in this context.
    ids = self.env.ref('the_package.the_external_id').ids
    return [('product_tmpl_id','=', ids)]


the_field = fields.Many2one('product.product',
                             required=False, 
                             domain = _get_picking_product_domain)

答案 1 :(得分:0)

上述解决方案不起作用。

错误:

ProgrammingError:无法调整类型' model_name'

但试试这个:

您不必在您的字段中插入域名:

@api.onchange('field_a')
def fiel_change(self):
    dom['field_a'] = [(*)] #* type your domain  
    return {'domain':dom}