odoo 一日一技 系统参数 config_parameter

# 基础介绍

在Odoo中,ir.config_parameter是一个特殊的模型,它用于存储全局配置参数。这些参数是全局的,可以在任何地方访问,而且它们的值在数据库中是持久化的。

你可以使用config_parameter模型来存储各种配置数据,比如API密钥、URL、系统设置等。你可以使用get_param方法来获取参数的值,使用set_param方法来设置参数的值。

# 使用示例

在继承增加配置时,字段一定要加上config_parameter参数命名,否则不会保存到ir.config_parameter模型中

```python

class ResConfigSettings(models.TransientModel):

    _inherit = 'res.config.settings'

    wechat_controllers = fields.Char(string='Wechat Record Url',default='http://',config_parameter='wechat_controllers')

```

获取参数

api_key = self.env['ir.config_parameter'].sudo().get_param('api_key')

设置参数

self.env['ir.config_parameter'].sudo().set_param('api_key', 'new_value')

# 注意

注意,由于config_parameter模型存储的数据是敏感的,所以通常需要使用sudo方法来提升权限。

 

另外,config_parameter模型的参数是以字符串的形式存储的,所以如果你需要存储非字符串的数据,你需要自己进行转换。例如,如果你需要存储一个布尔值,你可以将它转换为字符串'True'或'False',然后在获取值时再转换回布尔值。

```python

class IrConfigParameter(models.Model):

    """Per-database storage of configuration key-value pairs."""

    _name = 'ir.config_parameter'

    _description = 'System Parameter'

    _rec_name = 'key'

    _order = 'key'

    key = fields.Char(required=True)

    value = fields.Text(required=True)

```