これは非常に単純ですが、答えるのが難しい質問です。なぜなら、これを扱っているのは「少数」の人だけだと思うからです。
私は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
「my_product」という名前の OpenERP データベース内のすべての製品が検出されるはずですが、検出されません。そして、私はその理由を知っています:
私は英語が話されている国ではないので、OpenERP に 1 つの言語がインストールされており、xmlrpc の「検索」は「my_product」という名前の製品を探していますが、英語のみです。問題は、翻訳された名前を保存するフィールドが明らかにないことです...それも「名前」のようです! そのため、自分の言語で名前を指定すると、製品を見つけることができません。
世界の誰かが同じ問題を抱えていましたか?
編集
わかりました、手がかりがあります:「検索」を行う代わりに「読む」場合:
product_names = sock.execute(dbname, uid, pwd, 'product.product', 'read', ids, ['name'], {'lang': 'es_ES'})
このようにして、言語を指定でき、機能します! しかし、「検索」で同じことを行うことはできません。エラーが発生します。誰か道知ってる???
新しい編集
context = {'lang': 'es_ES'}
args = [('name', 'ilike', 'my_product')] # consulta
ids = sock.execute(dbname, uid, pwd, 'product.product', 'search', args, context)