Odoo 15如何获取选择字段选中值并判断未选中状态
问题解决:Odoo选择字段未选中判断及选中值获取
错误原因分析
- 未选中判断逻辑错误:Odoo中选择字段未选中时,值为
False而非空字符串'',原代码的条件self.Fam == ''无法正确判断未选中状态。 - 选中值获取方式错误:直接将
self._fields['Fam'].selection转为字典会报错,因为在部分Odoo版本中,selection可能是动态方法而非静态列表,导致无法直接转换为字典。
修正后的代码
@api.onchange('Fam') def _onchange_Fam(self): # 判断选择字段未选中的逻辑 if not self.Fam: # 未选中时执行的代码 print("未选择任何选项") else: # 打印选中的存储值(如'x1') print(f"选中的存储值:{self.Fam}") # 打印选中的显示标签(对应定义中的第二个值) label = self._fields['Fam'].get_selection_label(self.env, self.Fam) print(f"选中的显示标签:{label}")
关键说明
- 未选中判断:用
if not self.Fam可以覆盖False、None等空值情况,准确判断未选中状态。 - 获取显示标签:
get_selection_label是Odoo官方推荐的方法,无论选择字段是静态定义还是动态生成(如通过方法返回selection列表),都能正确获取对应的显示文本。如果仅需要存储在数据库中的值(如'x1'),直接使用self.Fam即可。
内容的提问来源于stack exchange,提问作者Zoro
相关产品推荐
相关产品推荐

