While returning from onchange, Error: [_.sprintf] expecting number but found string

While returning from onchange, Error: [_.sprintf] expecting number but found string

我定义了一个 onchange 并 return根据给定的出生日期 (dob) 编辑了计算的年龄

def onchange_getage_id(self, cr, uid, ids, dob, context=None):

    if dob:
        current_age = datetime.now().year - parser.parse(dob).year
        print current_age
        return {'value':{'age':current_age}}
    else:
        return {'value':{'age':' '}}

我已经声明年龄字段有这样的整数。

'age' : fields.integer('Age'),

在输入 dob 时它 return 是年龄,但是当我们删除并且在字段中不提供任何内容时它 return 和

Error: [_.sprintf] expecting number but found string

我找到答案了!

如果您已声明字段为整数,则必须 return 字典值必须为整数。

我已经 return 编辑它有 space (return {'value':{'age':' '}}) 表示字符串。这是错误的原因。

else 部分的 return 值也发生了以下变化。

else
    return {'value':{'age':0}}