3

これは非常に単純ですが、答えるのが難しい質問です。なぜなら、これを扱っているのは「少数」の人だけだと思う​​からです。

私は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)
4

3 に答える 3

5

を渡すと、ほぼ確実に機能するはずlangですcontext

例: context = {'lang': u'pl_PL'}.

うまくいかない場合は、name_search メソッドを上書きしてみてください。

于 2014-04-24T12:29:02.043 に答える
1

検索方法は次のとおりです。

search(cr, uid, args, offset=0, limit=None, order=None, context=None, count=False)

コンテキストを送信する場合は、args とコンテキストの間のパラメーターも送信する必要があります。

ids = sock.execute(dbname, uid, pwd, 'product.product', 'search', args, 0, 0, False, context)
于 2016-04-06T15:47:19.420 に答える