我创建了一个按钮并为其编写了函数,当我点击该按钮时,应该打开新的弹出窗口。
的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
我无法找到问题所在?
出了什么问题?
答案 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