美文网首页
Odoo12:关于配置模型中的数据问题

Odoo12:关于配置模型中的数据问题

作者: LoneyTree | 来源:发表于2019-10-09 15:15 被阅读0次

    抛砖:

    res.config.settings 是个瞬态的,会被定时清理。
    在这里设置的东西,被清理后,这些配置数据是怎么生效的????

    例如:
    在库存的设置中,我勾选了交货包裹这一项。一段时间后,res.config.settings被清理。清理后,我勾选的项依然有效,是什么原理?
    能否拿到配置中的某个字段,根据这个字段,在我的代码中做一些判断。

    引玉:

    我们一般会继承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类字段的设置值的方法。
    ============================================================================================================================


    相关文章

      网友评论

          本文标题:Odoo12:关于配置模型中的数据问题

          本文链接:https://www.haomeiwen.com/subject/kjrgpctx.html