2

我有一个模块,它有一个创建日期(当然是创建日期)和截止日期。

问题是我希望能够根据它的创建日期为这个截止日期设置一个默认值。但我希望能够从(比如说)res_config 动态配置它。

例如

如果我将 res_config 中的默认值配置为 5 天,我希望将截止日期的默认值填充为创建日期前 5 天的日期。

这可能吗?

谢谢

4

1 回答 1

2

我设法使用模型做到了这一点ir.configure_parameter

在 res_config.py 中:

class my_configuration(osv.osv_memory):
    _inherit = ['res.confi.settings']
    _columns = {
       'default_deadline' : fields.integer('Days per default', help="""Help field"""),
    }
    ...
    def set_default_deadline(self, cr, uid, ids, context=None):
        config = self.browse(cr, uid, ids)
        config = config and config[0]
        val = '%s' %(config.default_deadline) or '10'
        self.pool.geet('ir.config_parameter').set_param(cr,uid, 'key_value', val)
        return True

我们已经创建了一个系统参数。它实际上是作为从 'key_value' 到字符串 val 的映射创建的,因此我们必须在必要时将其转换为所需的类型。就我而言,y 创建了一个函数来获取我的模块中的截止日期:

def _get_deadline_date(self, cr, uid, context=None):
    val = self.pool.get('ir.config_parameter').get_param(cr, uid, 'key_value')
    try:
        val = int(val)
    except: 
        # Just in case...
        val = 30
    return (datetime.now() + timedelta(days=val)).strftime('%Y,%m,%d')

_defaults = {
    'deadline_date': lambda s, cr, uid, c: s._get_deadline_date(self, cr, uid,     context=c),
}

谢谢,希望对你有帮助!

于 2013-02-08T15:08:52.483 回答