我有一个模块,创建日期(当然,创建日期)和截止日期。
问题是我希望能够根据创建日期将默认值设置为此截止日期。 但我希望能够从(假设)res_config动态配置它。
e.g。
如果我将res_config中的默认值配置为5天,我希望截止日期的默认值在创建日期前5天填充日期。
这可能吗?
谢谢
答案 0 :(得分: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
Whit我们创建了一个系统参数。它实际上是作为从'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),
}
谢谢,希望它有所帮助!