[英]Calling methods through XMLRPC - Odoo v9
我在自定义模型上有一个简单的函数,可以根据xmlrpc(带有ripcord库的PHP)传递的信息来创建记录,但是当我执行php时,odoo控制台返回以下错误:
“无法封送递归词典” TypeError:无法封送递归词典“
我要传递的数据是“ Json”,存储在数据库的文本字段中,因此首先我解析查询并从数据库中获取数据,然后尝试通过XMLRPC将其发送到Odoo
这是我的代码:
t_form_main模型
class t_form_main(models.Model):
_name = "t_form_main"
_rec_name = "form_uid"
_order = "form_uid"
form_uid = fields.Char(string="ID",required=True)
json_string = fields.Text(string="JSON_original", required=True)
@api.one
def infoReceptor(self,info_uid,json_data):
vals = {}
vals['form_uid'] = info_uid
vals['json_string'] = json_data
return super(t_form_main,self).create(vals)
我用来调用XMLRPC的php语句:
$insert = $models->execute_kw($db, $uid, $password,'t_form_main','infoReceptor', array(self,"UID",$data));
将$ data作为存储该查询数据的变量:
$query = "SELECT raw_json FROM json_archive";
$result = $mysqlconn->query($query);
$row = $result->fetch_array(MYSQLI_ASSOC);
代码是正确的,问题是由DB编码中的问题引起的,这要感谢Phillip Stack在我的函数返回中提供的建议。
返回创建函数的响应时,您需要使用@ api.returns装饰该模型的创建函数,并使用lambda函数返回新创建记录的记录ID。 在您的情况下,如果您不想这样做,则将.id
添加到返回行的末尾。
return super(t_form_main,self).create(vals).id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.