【发布时间】:2018-01-02 12:12:45
【问题描述】:
我正在使用 xmlrpc 在我的 postgres odoo 数据库中搜索数据。
当在表中搜索 res_partner 时,一切都很好。
现在我想在 res_partner_title 中搜索,但它没有返回 ID。
我的数据库内容:
myDatabase=# select * from res_partner_title;
id | create_uid | create_date | name | shortcut | write_uid | write_date
----+------------+----------------------------+-----------+----------+-----------+----------------------------
1 | 1 | 2017-12-29 09:26:11.139936 | Madam | Mrs. | 1 | 2017-12-29 09:26:11.139936
2 | 1 | 2017-12-29 09:26:11.139936 | Miss | Miss | 1 | 2017-12-29 09:26:11.139936
3 | 1 | 2017-12-29 09:26:11.139936 | Sir | Sr. | 1 | 2017-12-29 09:26:11.139936
4 | 1 | 2017-12-29 09:26:11.139936 | Mister | Mr. | 1 | 2017-12-29 09:26:11.139936
5 | 1 | 2017-12-29 09:26:11.139936 | Doctor | Dr. | 1 | 2017-12-29 09:26:11.139936
6 | 1 | 2017-12-29 09:26:11.139936 | Professor | Prof. | 1 | 2017-12-29 09:26:11.139936
(6 rows)
我的代码:
myData = myObject.search('res.partner.title', [('shortcut','=','Mr.')])
class MyClass:
def __init__(self, host, port, username, pwd, dbname, context, dbsuperpwd=None,
dbuser=None, dbpasswd=None):
self.sock_common = xmlrpclib.ServerProxy ("http://" + host + ":" + str(port) + "/xmlrpc/common")
self.uid = self.sock_common.login(dbname, username, pwd)
self.sock = xmlrpclib.ServerProxy("http://" + host + ":" + str(port) + "/xmlrpc/object")
self.dbname = dbname
self.pwd = pwd
self.dbsuperpwd = dbsuperpwd
self.context = context
def search(self, modelname, query, offset=0, limit=0, order=False,
context=None):
context = context or self.context
for i in range(MAX_RETRIES):
try:
return self.sock.execute(self.dbname, self.uid, self.pwd,
modelname, 'search', query, offset,
limit, order, context)
except socket.error:
pass
无论过滤器是什么,它总是返回 1。
我怎样才能得到 3(在我的例子中)?
编辑(添加评论询问数据)
上下文 = {'lang': 'es_ES'}
它返回 1 或 0
我刚刚发现,它在odoo9中有效,在odoo10中失败
【问题讨论】:
-
修改您的域,作为
query参数发送:[('shortcut','ilike','%Mr.%')]。你也得到ID 1吗?你能把你要发送给search的变量上下文的内容粘贴在这里吗? -
已根据您的建议编辑
-
我已经给你发了一个答案,但是你说你的代码在 v9 上运行但在 v10 上运行很奇怪,看看并告诉我你得到了什么。
标签: python postgresql odoo xml-rpc