我在partner模型中有一个用户,我可以通过rust语言创建这个用户。现在,我必须将用户ID从res.partner模型链接到pos(Point of销售点)模型中的条目,其中partner ID是一个manyToOne字段。
我使用xmlrpc crate来调用odoo的XMLRPC以保存数据。
se std::collections::btree_map::IntoValues;
use std::collections::BTreeMap;
use std::error::Error;
use std::{collections::HashMap, env};
use xmlrpc::http::{build_headers, check_response};
use xmlrpc::{Request, Transport, Value};
//Somewhere in a function below
let mut body = BTreeMap::new();
let mut partner_id_vec = BTreeMap::new();
// trying to create that manyToMany field for saving to odoo.
partner_id_vec.insert("3".to_string(), Value::Int(625));
// Creating the final struct for sending to the XMLRPC call, this works
body.insert("partner_id".to_string(), Value::Struct(partner_id_vec));
body.insert("amount_paid".to_string(), Value::Double(2000.00));
body.insert("amount_return".to_string(), Value::Double(0.00));
body.insert("amount_tax".to_string(), Value::Double(0.00));
body.insert("amount_total".to_string(), Value::Double(2000.00));
body.insert("name".to_string(), Value::from("jane doe"));
let order_val_str = Value::Array(vec![Value::Struct(body)]);
println!("order_val_str: {:?}", order_val_str);
let save_request = Request::new("execute_kw")
.arg("db name")
.arg(request_result.unwrap())
.arg("My API key".to_string())
.arg("pos.order")
.arg("create")
.arg(order_val_str);
println!("save_request: {:?}", save_request);
let result = save_request.call_url("https://my.odoo.com/xmlrpc/2/object");
任何帮助都将不胜感激!
2条答案
按热度按时间3ks5zfa01#
可能只是错误的操作码,“3”是删除/取消链接。要创建一个关系,它的“0”或“4”。
https://www.odoo.com/documentation/15.0/developer/reference/backend/orm.html#odoo.fields.Command
nnsrf1az2#
partner_id
字段的类型为Many2one
,它需要整数而不是dict,您应该在日志中看到以下错误消息:session_id
字段是必填字段:就像
partner_id
一样,Odoo需要一个整数。若要提供
partner_id
字段值,请使用下列程式码: