【问题标题】:Odoo: How to check Module has been installed or not?Odoo:如何检查模块是否已安装?
【发布时间】:2017-12-26 16:34:12
【问题描述】:

我想继承 XML 中的表单视图以设置不可见的某些字段,但有时我不会安装该模块。

如何解决?

【问题讨论】:

    标签: python python-2.7 openerp odoo-9 odoo-10


    【解决方案1】:

    您可以将此代码添加到您要修改的视图的模型中:

    @api.depends()
    def _compute_module_x_installed(self):
        for record in self:
            module = self.env['ir.module.module'].search([
                ('name', '=', 'the_module_name')
            ])
            if module and module.state == 'installed':
                record.update({
                    'module_x_installed': True,
                })
    
    module_x_installed = fields.Boolean(
        compute='_compute_module_x_installed',
        string='Is X installed?',
    )
    

    这样你就会有一个字段来指示你是否安装了模块。

    【讨论】:

    • 感谢您的建议@forvas,但我想修改 XML 文件中的字段,您的建议在 PY 文件中。我不明白您的代码是否适用于 xml 文件如果我想修改一个模块但我从不安装该模块。对不起我的愚蠢。请帮我知道我该怎么办?
    • 我更了解您的需求。正确的方法是创建两个模块,一个是主要的,具有您的主要功能,另一个是只添加 XML 代码以使这些字段不可见的辅助模块(代码将是一些简单的行,如 <attribute name="invisible">1</attribute>)。该辅助模块必须依赖于(在__manifest__.py 中)您的主模块和创建您使不可见字段的模块(将安装或不安装的模块)。
    • self.env[ ] 中的模型名称必须是字符串,没有引号。
    • @RubénCabrera 那是真的,我忘记了,谢谢!
    【解决方案2】:

    还可以借助ir_module_module数据库表来获取模块的当前状态。

    ir.module.module model Odoo 创建一个名为 ir_module_module 的新数据库表,我们可以在其中使用 Pgadmin 工具通过 SQL Query 搜索模块的状态

    select state from ir_module_module where name='Your_module_name(technical_name)';
    

    如果我们得到的结果是 ' installed ' in out query 这意味着 我们的模块安装在我们的数据库中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-21
      • 2013-03-24
      • 2010-10-22
      • 2015-08-09
      • 2021-01-04
      相关资源
      最近更新 更多