簡體   English   中英

通過XMLRPC調用方法-Odoo v9

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM