2017-06-19 8 views
0

xmlrpc(PHP with ripcord library)が渡した情報からレコードを作成するためのカスタムモデルを用意していますが、PHPを実行するとodooコンソールから次のエラーが返されます:トラブリングメソッドXMLRPC - Odoo v9

私は渡している

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

データは、データベース内のテキストフィールドに格納されている「JSON」ですので、最初に私は、クエリを解決し、DBからデータを取得し、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)); 

がこのクエリからのデータを格納する変数として$のデータを考慮:

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

SOLUTION:

コードが正しく、DBのコード化の問題が原因で、あなたのアドバイスのPhillip Stackのおかげで私の機能の復帰でce。

答えて

0

create関数のレスポンスを返すときは、@ api.returnsを使用してモデルのcreate関数を修飾し、新しく作成したレコードのレコードIDを返すラムダ関数を追加する必要があります。あなたの場合、私が返す行の末尾に.idを追加することを望まない場合は、

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

コメントありがとうございますが、リターンの出力を向上させるだけです。私は自分の問題を解決しました、DBのコード化の問題でした – NMenam

関連する問題