Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
1 Trả lời
1180 Lượt xem

I am new with odoo and xmlrpc request, if there is english mistakes or bad explaination, please ask for details.

I was coding when I found some data with the xmlrpc request that I've never seen before, and when I tried to find them on the web interface the data where missing.

uid=common_proxy.authenticate(db,username,api_key,{})

ids=object_proxy.execute_kw(db, uid, api_key, 'product.template', 'search', [[['name','like','Tôle 304L ép3']]])

read=object_proxy.execute_kw(db, uid, api_key, 'product.template', 'read', [ids], {'fields': ['default_code', 'name','id','display_name','bom_ids']})

print(len(ids))

for val in read : print(val)

print(len(read))


Thank to this code I find 5 different items with 5 same names, but different ids and different default_code. However when I go in my web interface and I search for "Tôle 304L ép3" nothing from my xmlrpc comes out (by nothing I mean no item with other field in common with the xmlrpc request) but the real item of this search.

And when I try to identify the items found with de xmlrpc request, in the web interface, I found some other item without link with the one found in python.

The result with the xmlrpc request is not exactly "Tôle 304L ép3" it is : 'Tôle 304L ép3 (copie)'.

One last thing is that the web interface default_code for the item that i'm looking for, are some of other item in the xmlrpc request.

Thank you very much.

Ảnh đại diện
Huỷ bỏ
Tác giả

Thank you it works now, I would have never thought about it. 

Have a nice day, Thank you.

Câu trả lời hay nhất

Do you use multiple languages in Odoo? If you're trying to access data from the database in another language - I'm assuming French in your case - you have to specify this explicitly for RPC calls, because the records often differ. Try:

object_proxy.execute_kw(
db,
uid, 
api_key, 
'product.template', 
'search_read',
[],
{
'domain': [('name','like','Tôle 304L ép3'),],
'fields': ['name'],
'context' : {
'lang': "fr_FR"
}
}
)

object_proxy.execute_kw(
db,
uid, 
api_key, 
'product.template', 
'search_read',
[],
{
'domain': [('id', 'in', ids),],
'fields': ['default_code', 'name','id','display_name','bom_ids'],
'context' : {
'lang': "fr_FR"
}
}
)

Make sure that the ids variable is a list​ with id's, e.g., [1,2,3,...]​. This could be one reason for finding non-existent duplicates. I hope this helps!

Ảnh đại diện
Huỷ bỏ