for*_*vas 3 python xmlrpclib odoo
这是一个非常简单但难以回答的问题,因为我认为只有"少数"人才能解决这个问题.
我在Python中有这个简单的脚本:
import xmlrpclib
username = 'my_openerp_user'
pwd = 'my_password'
dbname = 'my_openerp_database'
sock = xmlrpclib.ServerProxy('http://localhost:8063/xmlrpc/common')
uid = sock.login(dbname, username, pwd)
sock = xmlrpclib.ServerProxy('http://localhost:8063/xmlrpc/object')
args = [('name', 'ilike', 'my_product')]
ids = sock.execute(dbname, uid, pwd, 'product.product', 'search', args)
print ids
Run Code Online (Sandbox Code Playgroud)
它应该在OpenERP数据库中找到名为"my_product"的所有产品,但事实并非如此.我知道为什么:
我不在一个谈论英语的国家,所以我在OpenERP中安装了一种语言,而xmlrpc的'搜索'正在寻找名为'my_product'的产品,但只有英文版.问题是显然没有一个字段来保存翻译的名称......它似乎也是"名字"!如果我用我的语言指定他们的名字,我找不到产品.
世界上任何人都有同样的问题吗?
编辑
好的,我有一个线索:如果不是'搜索',我会'读':
product_names = sock.execute(dbname, uid, pwd, 'product.product', 'read', ids, ['name'], {'lang': 'es_ES'})
Run Code Online (Sandbox Code Playgroud)
这样我可以指定语言,它的工作原理!但我不能用'搜索'做同样的事情,我得到错误.谁知道的方式???
新编辑
context = {'lang': 'es_ES'}
args = [('name', 'ilike', 'my_product')] # consulta
ids = sock.execute(dbname, uid, pwd, 'product.product', 'search', args, context)
Run Code Online (Sandbox Code Playgroud)
我几乎可以肯定,如果你通过它应该工作lang在context.
例如:context = {'lang': u'pl_PL'}.
如果它不起作用,您应该尝试覆盖name_search方法.