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

Odoo 10搜索条件定义报错:TypeError: unhashable type: 'list'求助

问题分析与解决方案

你的搜索条件定义不正确,报错TypeError: unhashable type: 'list'的核心原因是违反了Odoo搜索域的语法规则。

错误原因

Odoo的搜索域要求是一维列表结构,由条件元组和逻辑运算符('|'/'&'/'!')直接组成。你把['|', ("type", "=", "data"), ("type", "=", "translation")]作为子列表嵌套在主列表中,Odoo解析时会把这个子列表当成一个条件项处理,但列表是不可哈希的类型,因此触发了这个报错。

正确的搜索域写法

把嵌套的子列表去掉,将逻辑运算符和对应条件直接放在主列表的同一层级即可:

.search([
    ("product_id", "=", int(product_id)),
    ("language", "=", language),
    '|',
    ("type", "=", "data"),
    ("type", "=", "translation")
])

逻辑说明

Odoo的搜索域采用**后缀表达式(逆波兰表达式)**来处理逻辑关系:

  • 前两个条件("product_id", "=", ...)和("language", "=", ...)默认是逻辑与的关系
  • '|'表示它后面紧跟的两个type条件是逻辑或的关系
  • 整体逻辑正好匹配你的预期:(product_id匹配 AND language匹配) AND (type为data OR type为translation)

额外注意事项

  • 所有条件必须是(字段名, 运算符, 值)格式的元组
  • 逻辑运算符是字符串类型,不能放在元组或子列表中
  • 整个搜索域必须是一维列表,禁止嵌套子列表

内容的提问来源于stack exchange,提问作者M.E.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:38:28