Openerp 如何在<;过滤器>;领域

Openerp 如何在<;过滤器>;领域,openerp,odoo-10,Openerp,Odoo 10,使用odoo10(从githubcommit获取,branch10.0),我尝试在应用于树视图的搜索过滤器域中使用环境。像这样: 但是奥多不允许我使用self: NameError:未定义名称“self” 我还试图通过将结果保存在字段中,用Python过滤我的­­attrib\u metal,但我不想将其存储在数据库中,但Odoo search要求这样做 在我的Python中: def get_my_参数(self): attrid=self.env['ir.config_参数'].get

使用odoo10(从githubcommit获取,branch
10.0
),我尝试在应用于树视图的搜索过滤器域中使用环境。像这样:


但是奥多不允许我使用
self

NameError:未定义名称“self”


我还试图通过将结果保存在字段中,用Python过滤我的­­
attrib\u metal
,但我不想将其存储在数据库中,但Odoo search要求这样做

在我的Python中:

def get_my_参数(self):
attrid=self.env['ir.config_参数'].get_参数(
“my_module.attrib_metal”,无)
如果属性为:
对于rec in self:
setattr(rec,attrib_metal,rec.attribute_id.id==int(attrid))
attrib\u metal=fields.Boolean(store=False,compute=“get\u cr\u params”)
此代码是固有的
product.attribute.value
模型的一部分

在我的XML视图中:


我已经尝试过使用
store=True
参数,但是这种方法将值存储在数据库中,并且只计算一次,这不是我要寻找的

所以这不是正确的做法



如何在
域中使用环境?

正在web客户端(前端/Javascript)中评估该域。web客户端对
self
一无所知。此外,过滤器中的点表示法不受支持您需要为此创建一个新字段,因为域是在javascript端运行的,您无法在那里执行代码。新字段也必须存储在数据库中。这种图案在奥多的所有地方都有使用

使用:
将其显示在您的视图中,使其不可见,然后

<filter string="Metal" domain="[('attribute_id','=', your_field]" help="metal"/>


store=False
表示odoo不会将该字段存储在dbI中。我已更新了我的问题以澄清我的请求:我希望每次显示时都计算该字段。但是
store=True
只执行一次。然后您必须使用
api.depends('other_field')
来修饰计算字段的方法。因此,每当
另一个\u字段
更改时,您的字段将重新计算。如果希望每次显示字段时都重新计算字段,则必须覆盖
字段\u get
基本方法并在那里计算字段。我想那不是个好主意。