执行外部API时对象没有属性id

问题描述 投票:0回答:1

我似乎在将数据从 Odoo 16 传输到 Odoo 17 时遇到了问题。具体来说,当我使用 search_read 方法从像这样的所有字段检索数据时,我遇到一条错误,指出“未知对象有没有属性 ID。”但是,当我指定要检索的字段时,例如像这样的名称

res = models.execute_kw(db, uid, password, the_class, 'search_read', [domain], {'limit': 1})
,操作执行成功。
这是错误信息

res = models.execute_kw(db, uid, password, the_class, 'search_read', [domain], {'fields': ['name'], 'limit': 1})​


python odoo erp odoo-16 odoo-17
1个回答
0
投票

尝试下面的例子;它应该可以解决您的问题。

Traceback (most recent call last): File "/opt/odoo17/odoo/odoo/http.py", line 1765, in _serve_db return service_model.retrying(self._serve_ir_http, self.env) File "/opt/odoo17/odoo/odoo/service/model.py", line 133, in retrying result = func() File "/opt/odoo17/odoo/odoo/http.py", line 1792, in _serve_ir_http response = self.dispatcher.dispatch(rule.endpoint, args) File "/opt/odoo17/odoo/odoo/http.py", line 1996, in dispatch result = self.request.registry['ir.http']._dispatch(endpoint) File "/opt/odoo17/odoo/odoo/addons/base/models/ir_http.py", line 222, in _dispatch result = endpoint(**request.params) File "/opt/odoo17/odoo/odoo/http.py", line 722, in route_wrapper result = endpoint(self, *args, **params_ok) File "/opt/odoo17/odoo/addons/web/controllers/dataset.py", line 28, in call_button action = self._call_kw(model, method, args, kwargs) File "/opt/odoo17/odoo/addons/web/controllers/dataset.py", line 20, in _call_kw return call_kw(request.env[model], method, args, kwargs) File "/opt/odoo17/odoo/odoo/api.py", line 468, in call_kw result = _call_kw_multi(method, model, args, kwargs) File "/opt/odoo17/odoo/odoo/api.py", line 453, in _call_kw_multi result = method(recs, *args, **kwargs) File "/opt/odoo17/addons/Geofarm/migration/models/models.py", line 99, in migrate_step1 farm_vals = self.search_record(models,uid,'ferme.gaia',[]) File "/opt/odoo17/addons/Geofarm/migration/models/models.py", line 33, in search_record res = models.execute_kw(db, uid, password, the_class, 'search_read', [domain], {'limit': 1}) File "/usr/lib/python3.10/xmlrpc/client.py", line 1122, in __call__ return self.__send(self.__name, args) File "/usr/lib/python3.10/xmlrpc/client.py", line 1464, in __request response = self.__transport.request( File "/usr/lib/python3.10/xmlrpc/client.py", line 1166, in request return self.single_request(host, handler, request_body, verbose) File "/usr/lib/python3.10/xmlrpc/client.py", line 1182, in single_request return self.parse_response(resp) File "/usr/lib/python3.10/xmlrpc/client.py", line 1354, in parse_response return u.close() File "/usr/lib/python3.10/xmlrpc/client.py", line 668, in close raise Fault(**self._stack[0]) xmlrpc.client.Fault: <Fault 1: 'Traceback (most recent call last):\n File "/opt/odoo/odoo-server/odoo/addons/base/controllers/rpc.py", line 150, in xmlrpc_2\n response = self._xmlrpc(service)\n File "/opt/odoo/odoo-server/odoo/addons/base/controllers/rpc.py", line 130, in _xmlrpc\n result = dispatch_rpc(service, method, params)\n File "/opt/odoo/odoo-server/odoo/http.py", line 366, in dispatch_rpc\n return dispatch(method, params)\n File "/opt/odoo/odoo-server/odoo/service/model.py", line 37, in dispatch\n res = execute_kw(db, uid, *params[3:])\n File "/opt/odoo/odoo-server/odoo/service/model.py", line 59, in execute_kw\n return execute(db, uid, obj, method, *args, **kw or {})\n File "/opt/odoo/odoo-server/odoo/service/model.py", line 65, in execute\n res = execute_cr(cr, uid, obj, method, *args, **kw)\n File "/opt/odoo/odoo-server/odoo/service/model.py", line 50, in execute_cr\n result = retrying(partial(odoo.api.call_kw, recs, method, args, kw), env)\n File "/opt/odoo/odoo-server/odoo/service/model.py", line 133, in retrying\n result = func()\n File "/opt/odoo/odoo-server/odoo/api.py", line 462, in call_kw\n result = _call_kw_model(method, model, args, kwargs)\n File "/opt/odoo/odoo-server/odoo/api.py", line 435, in _call_kw_model\n result = method(recs, *args, **kwargs)\n File "/opt/odoo/odoo-server/odoo/models.py", line 5021, in search_read\n result = records.read(fields, **read_kwargs)\n File "/opt/odoo/odoo-server/odoo/models.py", line 2989, in read\n return self._read_format(fnames=fields, load=load)\n File "/opt/odoo/odoo-server/odoo/models.py", line 3168, in _read_format\n vals[name] = convert(record[name], record, use_name_get)\n File "/opt/odoo/odoo-server/odoo/fields.py", line 3011, in convert_to_read\n return value.id\nAttributeError: \'_unknown\' object has no attribute \'id\'\n'> The above server error caused the following client error: RPC_ERROR: Odoo Server Error RPCError@http://192.168.171.128:8017/web/assets/a644c0c/web.assets_web_dark.min.js:2873:319 makeErrorFromResponse@http://192.168.171.128:8017/web/assets/a644c0c/web.assets_web_dark.min.js:2876:163 jsonrpc/promise</<@http://192.168.171.128:8017/web/assets/a644c0c/web.assets_web_dark.min.js:2880:34

© www.soinside.com 2019 - 2024. All rights reserved.