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