2017-06-19 115 views
0

我有一個簡單的函數在自定義模型創建一個記錄從xmlrpc(PHP與ripcord庫)傳遞的信息,但是當我執行PHP的odoo控制檯返回以下錯誤:呼叫方法槽XMLRPC -Odoo v9

"cannot marshal recursive dictionaries" TypeError: cannot marshal recursive dictionaries "

誰我傳遞的數據是一個「類JSON」存儲在數據庫中的文本字段,所以首先我解析查詢,並從數據庫中的數據,然後嘗試把它通過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) 

誰我使用XML-RPC調用PHP的一句話:

$insert = $models->execute_kw($db, $uid, $password,'t_form_main','infoReceptor', array(self,"UID",$data)); 

考慮$數據,誰該查詢存儲數據的變量:

$query  = "SELECT raw_json FROM json_archive"; 
$result  = $mysqlconn->query($query); 
$row  = $result->fetch_array(MYSQLI_ASSOC); 

SOLUTION:

的代碼是正確的,問題是由在DB編纂一個問題引起的,這要歸功於菲利普堆棧爲您ADVI CE在我的函數的返回。

回答

0

當返回你需要來裝飾你的創造功能的模型@ api.returns與lambda函數返回記錄ID爲您新創建的記錄中創建函數的響應。在你的情況,如果你不想這樣做,我想補充.id來回報您行的末尾。

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

感謝您的評論,但只是改善退回輸出。我已經解決了我的問題,是在一個數據庫中的編纂問題 – NMenam