2017-09-06 12 views
2

xmlrpclib.ServerProxyを使用してodoo10サーバーでメソッドを実行しようとしています。 DummyCountryという名前のすべての国がロードされますが、の名前はidフィールドのみです。しかしそれはTypeError: unhashable type 'list'を投げます。奇妙なことは、このコードが今日まで働いていたことです。誰かが何が起こっているか説明できますか?Odoo xmlrpc 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' 
+0

デフォルトではリターンIDを検索するので、IDを追加する必要はありません。再試行してください。 – Heroic

+0

私は(上の編集されたコードに見られるように)試みましたが、同じエラーが発生します。 – GregaMohorko

+0

これは本当のコードですか、何も問題がないためです。ドメインを削除し、このエラーが発生した場合にテストしてください – Cherif

答えて

0

はコードの下に試してみてください。

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

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 

出力は、それはあなたを助けることを願っています。

関連する問題