gpt4 book ai didi

java - ODOO 如何使用 XMLRPC 库从 Android Studio 创建多对一记录?

转载 作者:行者123 更新时间:2023-12-02 10:59:00 26 4
gpt4 key购买 nike

我正在尝试在 fleet.vehicle 模型中创建新记录。由于记录的类型Many2One,因此会抛出以下异常。

de.timroes.axmlrpc.XMLRPCServerException: Traceback (most recent call last):

但是,我能够使用相同的代码 fragment 在 res.user 模型中创建记录,因为 Typeres.user 的 char > 型号。
我的代码 fragment 是:

public Integer create(String model, HashMap values) {
Integer newObjectId = null;
try {

XMLRPCClient client = new XMLRPCClient(mUrl);

Object[] parameters = {mDatabase, mUserId, mPassword, model, "create" ,new Object[]{values}};
newObjectId = (Integer) client.call("execute_kw", parameters);

} catch (XMLRPCException e) {
Log.d(CONNECTOR_NAME, e.toString());
}
return newObjectId;
}

日志是:

de.timroes.axmlrpc.XMLRPCServerException: Traceback (most recent call last):
File "/home/wms/RMS/9040/new_odoo11/odoo/service/wsgi_server.py", line 124, in wsgi_xmlrpc
result = odoo.http.dispatch_rpc(service, method, params)
File "/home/wms/RMS/9040/new_odoo11/odoo/http.py", line 115, in dispatch_rpc
result = dispatch(method, params)
File "/home/wms/RMS/9040/new_odoo11/odoo/service/model.py", line 39, in dispatch
res = fn(db, uid, *params)
File "/home/wms/RMS/9040/new_odoo11/odoo/service/model.py", line 153, in execute_kw
return execute(db, uid, obj, method, *args, **kw or {})
File "/home/wms/RMS/9040/new_odoo11/odoo/service/model.py", line 97, in wrapper
return f(dbname, *args, **kwargs)
File "/home/wms/RMS/9040/new_odoo11/odoo/service/model.py", line 160, in execute
res = execute_cr(cr, uid, obj, method, *args, **kw)
File "/home/wms/RMS/9040/new_odoo11/odoo/service/model.py", line 149, in execute_cr
return odoo.api.call_kw(recs, method, args, kw)
File "/home/wms/RMS/9040/new_odoo11/odoo/api.py", line 687, in call_kw
return call_kw_model(method, model, args, kwargs)
File "/home/wms/RMS/9040/new_odoo11/odoo/api.py", line 672, in call_kw_model
result = method(recs, *args, **kwargs)
File "/home/wms/RMS/9040/new_odoo11/addons/fleet/models/fleet_vehicle.py", line 197, in create
vehicle = super(FleetVehicle, self.with_context(mail_create_nolog=True)).create(data)
File "/home/wms/RMS/9040/ac-ars/ac_rms/models/planner_calender.py", line 422, in create
res_id = super(MailThread, self).create(values)
File "/home/wms/RMS/9040/new_odoo11/addons/mail/models/mail_thread.py", line 231, in create
thread = super(MailThread, self).create(values)
File "/home/wms/RMS/9040/new_odoo11/odoo/models.py", line 3278, in create
record = self.browse(self._create(old_vals))
File "/home/wms/RMS/9040/new_odoo11/odoo/models.py", line 3371, in _create
cr.execute(query, tuple(u[2] for u in updates if len(u) > 2))
File "/home/wms/RMS/9040/new_odoo11/odoo/sql_db.py", line 155, in wrapper
return f(self, *args, **kwargs)
File "/home/wms/RMS/9040/new_odoo11/odoo/sql_db.py", line 232, in execute
res = self._obj.execute(query, params)
psycopg2.DataError: invalid input syntax for integer: "Audi A3"
LINE 1: ...et_vehicle_id_seq'), 5, true, 'kilometers', NULL, 'Audi A3',...
[1]

我还附上了一张我正在尝试创建的图像。任何帮助深表感谢。 enter image description here我的问题是如何在 odoo 中从 Android/Java 创建 Many2One 类型的新记录?

最佳答案

我正在回答我自己的问题。这个问题的答案非常简单,我通过使用 XMLRPC 库进行探索、调试和尝试。我就是这样解决的。
我尝试更新的字段仅接受 odoo 中已预设的数据。例如:我必须首先使用 search_read 功能搜索该字段的可用预设数据。就像..

OdooConnect oc = OdooConnect.connect(SERVER_URL, PORT_NO, DB_NAME, USER_ID, PASSWORD);
List<HashMap<String, Object>> data = oc.search_read("fleet.vehicle", new Object[]{
new Object[]{condition}}, "id");

我在这里所做的是搜索与我想要创建的字段相关的所有预设数据,并获取与我想要在某些条件下更新的字符串相匹配的字符串的 ID。这里的条件是

new Object[]{new Object[]{new Object[]{"name", "=", "Audi A3"}}}

因此,当它与该条件匹配时,它会返回我需要传递给 Many2one 字段的对象的 id。在上面的代码中,“id”用于询问与条件匹配的字符串的id。现在我们将在创建新记录时将 id 传递给 Many2one 字段。将 id 传递给下面的创建方法。

final Integer idC = oc.create("web.service", new HashMap() {{
put("name", "Final Test");
put("value", 29); //
put("partner_id", id); //many2One field. here we are using pre defined value i,e setting a value of other relation model to partner_id
}});

希望对正在寻找答案的人有所帮助。 :)

关于java - ODOO 如何使用 XMLRPC 库从 Android Studio 创建多对一记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51496089/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com