通过XMLRPC调用方法 - Odoo v9

时间:2017-06-19 21:42:58

标签: php mysql odoo odoo-9

我在自定义模型上有一个简单的函数来创建一个由xmlrpc传递的信息的记录(带有ripcord库的PHP)但是当我执行php时,odoo控制台会返回以下错误:

  

"不能编组递归词典" TypeError:无法编组   递归词典"

我传递的数据是" Json"存储在数据库的文本字段中,因此首先我解析查询并从DB获取数据,然后尝试通过XMLRPC将其发送到Odoo

这是我的代码:

t_form_main model

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在返回我的函数时给出的建议。

1 个答案:

答案 0 :(得分:0)

当返回create函数的响应时,你需要使用带有lambda函数的@ api.returns为模型装饰你的create函数,为你新创建的记录返回记录id。在您的情况下,如果您不想这样做,我会将.id添加到您的返回行的末尾。

return super(t_form_main,self).create(vals).id