如何解决Odoo中onchange函数拼接字段的TypeError报错
解决Odoo字段拼接的TypeError问题
你的报错根源有两个:一是代码里写错了目标字段名(self.field_name应该是self.name);二是当first_name或last_name为空时,会被解析为None或布尔值False,直接和字符串拼接触发类型错误。
修正后的代码
@api.onchange('first_name', 'last_name') def onchange_name(self): # 用or ""将空值转为空字符串,确保拼接的都是字符串类型 self.name = (self.first_name or "") + " " + (self.last_name or "") name = fields.Char(string='Name of the Employee', readonly=True) first_name = fields.Char(string='First Name') last_name = fields.Char(string='Last Name')
关键说明
- 修正字段名:把
self.field_name改为self.name,对应你定义的只读字段 - 空值处理:
(字段名 or "")会将空的字段(None或空字符串)自动转为空字符串,彻底避免类型不匹配的拼接错误 - 格式优化:在名和姓之间加空格,让最终显示更符合常规姓名格式
内容的提问来源于stack exchange,提问作者ProgMan
相关产品推荐
相关产品推荐

