通过 XML-RPC 与 Odoo 交互
Interaction with Odoo via XML-RPC
在实习期间,我被告知要构建一个 Django 应用程序,通过 XML-RPC 从 Odoo 检索数据,据我所知,xmlrpc Web 服务器仅支持 XML 格式,但是当我按照 "Search and read" 部分中 Odoo10 https://www.odoo.com/documentation/10.0/api_integration.html 的官方文档,在我看来,响应是 JSON 格式(这对我有好处)。我只是想知道我是否遗漏了什么。
任何澄清?谢谢。
不完全是 JSON,而是一个 Python 对象(列表、字典等)准备通过 dumps
转换为 JSON 字符串json
库的方法。查看此 Python 控制台使用 XMLRPC 的行为。首先,我进行了查询(也使用 search_read
方法)。然后我询问接收结果的类型,它是一个数组(Python 对象)。然后,要将此 Python 对象转换为 JSON 字符串,我使用 dumps
方法。你有你的 JSON.
>>> res = models.execute_kw(
db,
uid,
password,
'res.partner',
'search_read',
[[
['is_company', '=', True],
['customer', '=', True]
]],
{
'fields': ['name', 'country_id', 'comment'],
'limit': 5
}
)
>>> res
[
{
'comment': False,
'country_id': [69, 'Spain'],
'id': 1665,
'name': 'Customer A'
}, {
'comment': False,
'country_id': [69, 'Spain'],
'id': 5799,
'name': 'Customer B'
}, {
'comment': False,
'country_id': [69, 'Spain'],
'id': 1946,
'name': 'Customer C'
}, {
'comment': False,
'country_id': [69, 'Spain'],
'id': 1367,
'name': 'Customer D'
}, {
'comment': False,
'country_id': [69, 'Spain'],
'id': 2066,
'name': 'Customer E'
}
]
>>> type(res)
<type 'list'>
>>> import json
>>> json.dumps(res)
'[{"comment": false, "country_id": [69, "Spain"], "id": 1665, "name": "CUSTOMER A"}, {"comment": false, "country_id": [69, "Spain"], "id": 5799, "name": "CUSTOMER B"}, {"comment": false, "country_id": [69, "Spain"], "id": 1946, "name": "CUSTOMER C"}, {"comment": false, "country_id": [69, "Spain"], "id": 1367, "name": "CUSTOMER D"}, {"comment": false, "country_id": [69, "Spain"], "id": 2066, "name": "CUSTOMER E"}]'
>>> your_json = json.dumps(res) # This variable is ready to be sent as JSON
感谢@ChesuCR,我已经更新了我的答案以澄清它。
在实习期间,我被告知要构建一个 Django 应用程序,通过 XML-RPC 从 Odoo 检索数据,据我所知,xmlrpc Web 服务器仅支持 XML 格式,但是当我按照 "Search and read" 部分中 Odoo10 https://www.odoo.com/documentation/10.0/api_integration.html 的官方文档,在我看来,响应是 JSON 格式(这对我有好处)。我只是想知道我是否遗漏了什么。
任何澄清?谢谢。
不完全是 JSON,而是一个 Python 对象(列表、字典等)准备通过 dumps
转换为 JSON 字符串json
库的方法。查看此 Python 控制台使用 XMLRPC 的行为。首先,我进行了查询(也使用 search_read
方法)。然后我询问接收结果的类型,它是一个数组(Python 对象)。然后,要将此 Python 对象转换为 JSON 字符串,我使用 dumps
方法。你有你的 JSON.
>>> res = models.execute_kw(
db,
uid,
password,
'res.partner',
'search_read',
[[
['is_company', '=', True],
['customer', '=', True]
]],
{
'fields': ['name', 'country_id', 'comment'],
'limit': 5
}
)
>>> res
[
{
'comment': False,
'country_id': [69, 'Spain'],
'id': 1665,
'name': 'Customer A'
}, {
'comment': False,
'country_id': [69, 'Spain'],
'id': 5799,
'name': 'Customer B'
}, {
'comment': False,
'country_id': [69, 'Spain'],
'id': 1946,
'name': 'Customer C'
}, {
'comment': False,
'country_id': [69, 'Spain'],
'id': 1367,
'name': 'Customer D'
}, {
'comment': False,
'country_id': [69, 'Spain'],
'id': 2066,
'name': 'Customer E'
}
]
>>> type(res)
<type 'list'>
>>> import json
>>> json.dumps(res)
'[{"comment": false, "country_id": [69, "Spain"], "id": 1665, "name": "CUSTOMER A"}, {"comment": false, "country_id": [69, "Spain"], "id": 5799, "name": "CUSTOMER B"}, {"comment": false, "country_id": [69, "Spain"], "id": 1946, "name": "CUSTOMER C"}, {"comment": false, "country_id": [69, "Spain"], "id": 1367, "name": "CUSTOMER D"}, {"comment": false, "country_id": [69, "Spain"], "id": 2066, "name": "CUSTOMER E"}]'
>>> your_json = json.dumps(res) # This variable is ready to be sent as JSON
感谢@ChesuCR,我已经更新了我的答案以澄清它。