TypeError:<内置函数=“”id =“”>不是JSON可序列化的Odoo 9.0

时间:2016-05-20 18:27:15

标签: odoo-8 odoo-9

我创建了一个按钮并为其编写了函数,当我点击该按钮时,应该打开新的弹出窗口。

的xml:

<button name="button_method" string="Test Drive Type" type="object" class="btn-primary"/>

吡啶:

@api.multi
def button_method(self):
view_ref = self.pool.get('ir.model.data').get_object_reference('autochip', 'so_on_form')
view_id = view_ref and view_ref[1] or False
return {
'type': 'ir.actions.act_window',
'res_model': 'test.drive.allocation',
'view_type': 'form',
'view_mode': 'form',
'views': [(view_id, 'form')],
'view_id': view_id,
'target':'new',
}

当我点击按钮时,我正在

TypeError: <built-in function id> is not JSON serializable 

我无法找到问题所在?

出了什么问题?

2 个答案:

答案 0 :(得分:0)

您必须将字符串或数字返回给json 尝试:

@api.multi
def button_method(self):
view_ref = self.pool.get('ir.model.data').get_object_reference('autochip', 'so_on_form')
view_id = view_ref and view_ref[1] or False
return {
'type': 'ir.actions.act_window',
'res_model': 'test.drive.allocation',
'view_type': 'form',
'view_mode': 'form',
'views': [(str(view_id), 'form')],
'view_id': str(view_id),
'target':'new',
}

答案 1 :(得分:0)

在调用get_object_reference时使用 self._cr和self._uid

self.pool.get('ir.model.data').get_object_reference(self._cr, self._uid,'autochip', 'so_on_form')
  

在新的API中, self.env.ref 在短代码中执行相同的操作。

obj_id=self.env.ref('autochip.so_on_form', False).id