繁体   English   中英

在odoo数据库中进行xmlrpc搜索

[英]xmlrpc search in odoo database

我正在使用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(在我的示例中)?

编辑(添加评论询问的数据)

context = {'lang':'es_ES'}

返回1或0

我刚刚发现,它可以在odoo9中工作,而在odoo10中失败

我想问题可能出在语言上。 您要在context es_ES发送并寻找英文的快捷方式,因此现在尝试例如使用[('shortcut','ilike','%Sr.%')]替换当前的搜索域。

看一下ir_translation表:

  id  | lang  |  src   |            name            | type  | module |   state    | comments | value | res_id 
------+-------+--------+----------------------------+-------+--------+------------+----------+-------+--------
 6483 | es_ES | Mister | res.partner.title,name     | model | base   | translated |          | Señor |      3
 6559 | es_ES | Mr.    | res.partner.title,shortcut | model | base   | translated |          | Sr.   |      3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM