You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo 15如何获取选择字段选中值并判断未选中状态

问题解决:Odoo选择字段未选中判断及选中值获取

错误原因分析

  1. 未选中判断逻辑错误:Odoo中选择字段未选中时,值为False而非空字符串'',原代码的条件self.Fam == ''无法正确判断未选中状态。
  2. 选中值获取方式错误:直接将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 10:45:33