Openerp 如何在<;过滤器>;领域
使用odoo10(从githubcommit获取,branchOpenerp 如何在<;过滤器>;领域,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
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
基本方法并在那里计算字段。我想那不是个好主意。