关于ODOO中配置模型中的数据问题
-
好问题。
我们一般会继承res.config.settings
来定义一些配置信息。 而res.config.settings
是一个暂态模型(models.TransientModel
)并不能长久保存数据,那数据是保存在什么地方的呢?简单回答,这些配置数据并不保存在同一个地方,很多设置的状态是通过动态判断来获得的。
实际上当我们定义一个一个如下的配置类:class MyConfigWizard(models.TransientModel): _name = 'my.settings' _inherit = 'res.config.settings' default_foo = fields.type(..., default_model='my.model'), group_bar = fields.Boolean(..., group='base.group_user', implied_group='my.group'), module_baz = fields.Boolean(...), config_qux = fields.Char(..., config_parameter='my.parameter') other_field = fields.type(...),
可以看到配置类上的字段分以上5种类型, 也就是:
- 名字以
default_
开头,系统会根据设置的值来设置全局的ir.default
值 - 名字以
group_
开头,系统会根据设置的值来配置res.group
值 - 名字以
module_baz
, 系统会根据设置,安装或卸载baz模块 - 字段定义中包含
config_parameter
属性,系统将设置的值记录到ir.config_parameter
表中,其key为config_parameter
的值(上例中为:my.parameter
), value为本配置字段的值 - 其他字段,则需要继承
set_value
方法以设定存储的地点,而get_value
中设置获取值的方法
当打开配置界面时系统会自动调用
res.config.settings
类的default_get
方法,而该方法定义了如何获取这5类字段的设置值的方法。希望对你理解有帮助
- 名字以
-
@digitalsatori 万分感谢先安科技!