我似乎在将数据从 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})
尝试下面的例子;它应该可以解决您的问题。
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