簡體   English   中英

Odoo xmlrpc TypeError:無法散列的類型“列表”

[英]Odoo xmlrpc TypeError: unhashable type 'list'

我正在嘗試使用xmlrpclib.ServerProxy在odoo10服務器上執行方法。 它將使用名稱DummyCountry加載所有國家/ 地區 ,但僅加載名稱ID字段。 但是它拋出一個TypeError: unhashable type 'list' 奇怪的是,這段代碼一直工作到今天。 有人可以解釋發生了什么嗎?

有問題的代碼行:

# sock is of type xmlrpclib.ServerProxy
countries = sock.execute_kw(
    db, # database
    uid, # user id
    pwd, # password
    'res.country', # model
    'search_read', # method
    [[['name', '=', 'DummyCountry']]], # expressions
    {'fields': ['name']} # additional parameters? (id is included automatically)
)

錯誤:

Traceback (most recent call last):
  File "/opt/odoo/odoo10/odoo/service/wsgi_server.py", line 56, in xmlrpc_return
  result = odoo.http.dispatch_rpc(service, method, params)
  File "/opt/odoo/odoo10/odoo/http.py", line 118, in dispatch_rpc
    result = dispatch(method, params)
  File "/opt/odoo/odoo10/odoo/service/model.py", line 38, in dispatch
 res = fn(db, uid, *params)
  File "/opt/odoo/odoo10/odoo/service/model.py", line 119, in wrapper
    return f(dbname, *args, **kwargs)
  File "/opt/odoo/odoo10/odoo/service/model.py", line 182, in execute
    res = execute_cr(cr, uid,obj, method, *args, **kw)
  File "/opt/odoo/odoo10/odoo/service/model.py", line 171, in execute_cr
    return odoo.api.call_kw(recs, method, args, kw)
  File "/opt/odoo/odoo10/odoo/api.py", line 679, in call_kw
    return call_kw_model(method, model, args, kwargs)
  File "/opt/odoo/odoo10/odoo/api.py", line 664, in call_kw_model
    result = method(recs, *args, **kwargs)
  File "/opt/odoo/odoo10/odoo/models.py", line 4670, in search_read
    records = self.search(domain or [], offset=offset, limit=limit, order=order)
  File "/opt/odoo/odoo10/odoo/models.py", line 1509, in search
    res = self._search(args, offset=offset,limit=limit, order=order, count=count)
  File "/opt/odoo/odoo10/odoo/models.py", line 4215, in _search
    query = self._where_calc(args)
  File "/opt/odoo/odoo10/odoo/models.py", line 4014, in _where_calc
    e = expression.expression(domain, self)
  File "/opt/odoo/odoo10/odoo/osv/expression.py", line 640, in __init__
    self.expression = distribute_not(normalize_domain(domain))
  File "/opt/odoo/odoo10/odoo/osv/expression.py", line 289, in distribute_not
    eliftoken in DOMAIN_OPERATORS_NEGATION:
TypeError: unhashable type: 'list'

嘗試下面的代碼。

import xmlrpclib
url = 'http://192.168.50.35:6060'
db = 'shop'
username = 'admin'
password = 'admin'
common = xmlrpclib.ServerProxy('{}/xmlrpc/2/common'.format(url))
uid = common.authenticate(db, username, password, {})
models = xmlrpclib.ServerProxy('{}/xmlrpc/2/object'.format(url))
ids = models.execute_kw(db, uid, password,
'res.country', # model
'search_read', # method
[[['name', '=', 'India']]], # expressions
{'fields': ['name']})
print'idsssss',ids

產量

idsssss [{'id': 105, 'name': 'India'}]

希望對您有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM