Как решить ошибку при нажатии на кнопку открытия новой формы в odoo10?

def create_file(self):

    opportunity_id = self.convert_to_file()
    return self.env['trademark.process'].view_file(opportunity_id)

Я использовал функцию convert file, чтобы передать некоторые значения текущей модели в trademark.process

def convert_to_file(self, partner_id=False):

    tm_process_obj = self.env['trademark.process']
    tm_search_record = self.env['trademark.search'].browse(self.id)
    for rec in tm_search_record:
        opportunity_id = tm_process_obj.create({
                        'search_name_char': rec.search_name or False,
                        'classification_no_id':rec.classification_no_id.id or False,
                        'partner_id': rec.partner_id.id or False,
                        'user_id': rec.user_id.id or False,
                        'search_date': rec.search_date or False,
                        'search_seq_no': rec.seq_no or False,
                    })
        vals = {
            'file_no': opportunity_id.seq_no,
        }
        self.write(vals)
    return opportunity_id

Затем, наконец, я возвращаю идентификатор возможности и перехожу к функции просмотра файла.

def view_file(self, opportunity_id):
    view_id=self.env.ref('trademark_services.trademark_process_form_view').id
    return {
        'name': _('File Details'),
        'type': 'ir.actions.act_window',
        'view_type': 'form',
        'view_mode': 'form',
        'res_model': 'trademark.process',
        'view_id': view_id,
        'res_id': opportunity_id,
        'target':'current'
    }

Но при нажатии на кнопку произошла ошибка.

Traceback (most recent call last):
File "/home/ubuntu/workspace/amzsys_erp/odoo/http.py", line 638, in 
 _handle_exception
 return super(JsonRequest, self)._handle_exception(exception)
File "/home/ubuntu/workspace/amzsys_erp/odoo/http.py", line 689, in 
   dispatch
   return self._json_response(result)
 File "/home/ubuntu/workspace/amzsys_erp/odoo/http.py", line 627, in 
_json_response
   body = json.dumps(response)
 File "/usr/lib/python2.7/json/__init__.py", line 243, in dumps
  return _default_encoder.encode(obj)
File "/usr/lib/python2.7/json/encoder.py", line 207, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python2.7/json/encoder.py", line 270, in iterencode
  return _iterencode(o, 0)
File "/usr/lib/python2.7/json/encoder.py", line 184, in default
  raise TypeError(repr(o) + " is not JSON serializable")
TypeError: trademark.process(131,) is not JSON serializable

Как решить эту проблему. Как открыть новую форму, когда я нажимаю кнопку.

Я хочу передать в эту форму некоторые значения.

В чем ошибка в моем коде?

Примечание: использование odoo10


person code_explorer    schedule 21.07.2017    source источник


Ответы (1)


Проблема в этом методе, когда вы передаете res_id.

Используйте возможность_id.id.

def view_file(self, opportunity_id):
    view_id=self.env.ref('trademark_services.trademark_process_form_view').id
    return {
        'name': _('File Details'),
        'type': 'ir.actions.act_window',
        'view_type': 'form',
        'view_mode': 'form',
        'res_model': 'trademark.process',
        'view_id': view_id,
        'res_id': opportunity_id.id,
        'target':'current'
    }
person Emipro Technologies Pvt. Ltd.    schedule 21.07.2017