2017-07-21 4 views
3
def create_file(self): 

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

私はその後、最終的に私は機会IDを返し、ビューファイル機能に渡さtrademark.processodoo10で新しいフォームを開くためのボタンをクリックするとエラーを解決する方法は?

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を使用してください。

答えて

4

res_idを渡すこのメソッドの問題。

opportunity_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' 
    } 
+1

ありがとうございます – aslamsha22

関連する問題