2012-05-20 7 views
4

OpenERP에서 OSV 개체는 새로운보기를 열거 나 작업을 활성화 할 수있는 무언가를 반환 할 수 있습니다. 예를 들어, sale.order는 다음을 반환 manual_invoice 방법이 있습니다OSV 메서드의 return 문

return { 
     'name': _('Customer Invoices'), 
     'view_type': 'form', 
     'view_mode': 'form', 
     'view_id': [res_id], 
     'res_model': 'account.invoice', 
     'context': "{'type':'out_invoice'}", 
     'type': 'ir.actions.act_window', 
     'nodestroy': True, 
     'target': 'current', 
     'res_id': inv_ids and inv_ids[0] or False, 
    } 

와 동일한 창에서 송장 양식보기를 엽니 다.

'view_id': [res_id],'views': [(id2, 'form')],으로 변경되었으며 다른 부분도 수정 된 것으로 보았지만 여전히 작동합니다.

그래서이 메커니즘이 어떻게 작동하는지 이해할 수 없습니다. 반환 값의 어떤 값을 포함해야하는지 결정하는 것은 무엇입니까? 어느 것이 필수이고 어떤 것이 아닌지 어떻게 알 수 있습니까?

감사합니다.

답변

5

반환 된 사전은 XML보기에서 찾은 것과 같은 동작 (ir.actions.act_window 모델)으로 해석됩니다. 이 설명서는 Technical Mementoofficial docs에 있습니다.

+0

유일한 예외는 튜플을 가진 목록 인 views 애트리뷰트입니다. 반면 xml 파일에서는 별도의 ir.actions.act_window.view 레코드를 작성해야합니다. – Red15

+1

@ Red15 사실 인라인 액션 정의에서 반환 될 수있는'views' 값은 ir.actions.act_window 모델에 존재하는 실제 함수 필드'views'와 다르지 않습니다. 이 함수는 실제로 사용할 뷰를 명시 적으로 지정하는'ir.actions.act_window.view' 자식 레코드에 의존합니다. 그리고 그 값은 튜플의 같은리스트입니다 - 내가 생각할 수있는 한가지 차이점은 활성화 된 뷰가 폼 뷰일 때만, 일반적으로 열릴 특정 레코드의 ID를 지정할 수있는 여분의'res_id' 키가 있다는 것입니다. 이는 마법사를 다시 열 때 유용합니다. – odony