2016-05-20 9 views
0

Ich habe einen Button erstellt und schrieb Funktion dafür, wenn ich auf diesen Button klicke, sollte sich ein neues Popup-Formular öffnen.TypeError: <eingebaute Funktions-ID> ist nicht JSON serialisierbar Odoo 9.0

xml:

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

py:

@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', 
} 

Wenn ich auf den Knopf klicken Ich erhalte

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

ich nicht in der Lage bin zu finden, was das Problem ist?

was ist los?

Antwort

0

Sie haben einen String oder eine Zahl zurück Versuchen Sie, 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', 
} 
0

Verwendung self._cr und self._uid während get_object_reference Aufruf:

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

In the new API self.env.ref do the same thing in short code .

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