1

res.partnerクラスで宣言された関数をコントローラーから呼び出そうとしています。このコントローラーは「外部」であるため、モデルからデータを取得するにはopenerplib(xmlrpclibも有効) を使用する必要がありました。

例えば:

connection = openerplib.get_connection (hostname="localhost", database="my_db", login="admin", password="my_pwd", port=8069)     
res_partner_model = connection.get_model("res.partner")

モデルができたsearchので、 、read、またはsearch_readメソッドを使用してres.partnerモデルからデータを取得できます。

しかし、そのクラスで宣言された関数を呼び出すにはどうすればよいでしょうか? 出来ますか?

4

1 に答える 1

0

はい、を使用して関数を呼び出すことができますxmlrpclib

これを試して、

import xmlrpclib

#dbname = "my_db"
#username = "admin"
#pwd = "my_pwd"

sock_common = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/common')
#uid = sock_common.login(dbname, username, pwd)
uid = sock_common.login("my_db", "admin", "my_pwd")
sock = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/object')

#this will search all ids of res_partner class
partner_ids = sock.execute(dbname, uid, pwd, 'res.partner', 'search',[])

for partner_id in partner_ids:
    #res = sock.execute(dbname, uid, pwd, 'res.partner', 'your_function_name', [partner_id])
    res = sock.execute("my_db", uid, "my_pwd", 'res.partner', 'your_function_name', [partner_id])
    print '\n====res=====',res

print " Ending Query ... "
于 2014-12-03T16:48:40.520 に答える