如何在Odoo 10的搜索视图域中模拟“ self.env.ref”?

时间:2018-07-16 14:59:00

标签: python xml odoo odoo-10

我正在尝试在搜索视图中创建一个具有域的过滤器,该域取决于特定记录的属性,该记录具有我的XML ID。问题是在这种情况下我不知道如何获取对象和使用其属性。

这就是我想要的,但是会引发错误“ ref unknown ”:

<filter string="My filter" name="my_filter" domain="[('my_field','=',ref('my_module.my_xml_id').name)]"/>

使用%(my_module.my_xml_id)d无效,因为我无法获取整数的属性,并且需要对象的名称。

所以我想知道是否有比在模型中创建存储的计算字段以在过滤器中使用名称更好的解决方案。太糟糕了,因为我将在每个记录中存储相同的值...

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

class YourClass(models.Model):

    _name = 'your.class'

    @api.model
    def _your_field_domain(self):
        return [
            ('my_field', '=',
             self.env.ref('my_module.my_xml_id').name)
            ]

    your_field = fields.Many2one(
        'another.class',
        domain=_your_field_domain
    )