在act_windows中启用搜索过滤器

时间:2019-09-16 06:31:46

标签: odoo odoo-10 odoo-11 odoo-12

我知道我们可以启用搜索过滤器

<field name="context">{'search_default_Product':1}</field>

但是,如果我想以编程方式启用过滤器,该怎么办?我可以在哪里放置代码以启用它?

谢谢

2 个答案:

答案 0 :(得分:1)

您可以将菜单项的操作更改为服务器操作。可以在菜单项中引用任何操作。

服务器操作(ir.actions.server)应该引用应通过菜单打开的模型。现在您有了一些选择。希望其中三个易于理解:

  1. 在服务器操作中使用类型code并调用模型方法。该方法应以字典形式返回窗口动作。代码如下:
action = model.my_model_method_returning_an_action()
  1. 在服务器操作中使用类型code,并即时创建您的操作。代码如下:
action = {
    'type': 'ir.actions.act_window',
    'view_type': 'form',
    'view_mode': 'tree,form',
    'res_model': 'my.model',
    'target': 'current',
}
if env.user in env['res.config_settings'].check_my_m2m():
    action['context'] = {'search_default_Product': 1}
  1. 在服务器操作中使用类型code并调用准备好的窗口操作,但要操纵上下文:
action = env.ref('my.external.id.of.the.action.to.call').read()[0]
if env.user in env['res.config_settings'].check_my_m2m():
    if 'context' in action:
        action['context'].update({'search_default_Product': 1})
    else:
        action['context'] = {'search_default_Product': 1}

答案 1 :(得分:0)

您必须在ir.actions.act_window中编写此代码,以便它可以自动启用过滤器。