Odoo 15中如何将查询返回值正确添加至选择字段?
Odoo 15选择字段关联函数显示异常的解决方法
你的问题出在动态生成Selection选项的函数返回格式不符合Odoo要求:
- Odoo要求Selection字段的动态选项函数必须返回二元组组成的列表,每个元组格式为
(存储值, 界面显示标签) - 你当前的函数返回的是单值列表,导致界面解析异常
修复后的函数代码:
def get_famille_list(self): all_fam = [] query = """ SELECT x FROM product_template WHERE x !='' """ self.env.cr.execute(query) data = self.env.cr.fetchall() for fam in data: # 将每个值转为(存储值, 显示标签)的二元组 all_fam.append((fam[0], fam[0])) return all_fam
如果要更符合Odoo开发规范,推荐用ORM查询替代原生SQL,避免直接操作游标:
def get_famille_list(self): # 筛选出x字段不为空的产品模板 product_templates = self.env['product.template'].search([('x', '!=', '')]) # 生成二元组列表,自动过滤空值 return [(pt.x, pt.x) for pt in product_templates if pt.x]
调整后重新运行,选择字段就能正常显示x1、x2、x3这类选项了。
内容的提问来源于stack exchange,提问作者Zoro
相关产品推荐
相关产品推荐

