2014-04-08 2 views
0

활성 ID를 팝업 창에 전달하여 내 함수에서 호출자 객체의 실제 상태에 액세스 할 수 있도록하려고합니다.OpenERP 7.0에서 활성 ID를 팝업으로 전달하는 방법

그 때문에 다음을 수행합니다. XML 뷰에서 : 파이썬에서

<page string="Opinions"> 
    <field name="opinion_ids" context="{'generic_request_id': active_id}" > 
     <tree delete="false"> 
      <field name="request_state" /> 
      <field name="opinion_request_date" /> 
      <field name="requestor" /> 
     (...) 

내가 가진 : PDB에서

_defaults={ 
    'state': 'requested', 
    'opinion_request_date': lambda *a: datetime.date.today().strftime('%Y-%m-%d'), 
    'request_state': lambda self, cr, uid, context: self._get_request_state(cr, uid, context=context), #store the state of the request when opinion was asked 
    (...) 
} 
(...) 
def _get_request_state(self, cr, uid, context=None): 
    ids = context.get('generic_request_id', False) 
    #import pdb; pdb.set_trace()   
    return self.pool.get('generic.request').browse(cr, uid, ids, context).state 

가 나는 상황에서 더 generic_request_id 변수가 없기 때문에 "IDS는"거짓임을 깨닫게 ...

(Pdb) p ids 
False 

(Pdb) p context 
{'lang': 'en_US', 'no_store_function': True, 'tz': False, 'uid': 1} 

누구나이 방법을 알고 있습니까?

답변

2

워크 플로 기능을 사용하면 문맥을 확인할 필요가 없습니다.
opinions 개체가 내 requests 개체와 연결되어 many2one이므로 부모 요청의 idgeneric_request_id 필드에 저장됩니다.

생성시 워크 플로가 트리거되고 state의 새 값을 사용하고 request_state 값을 내 호출 개체에 저장합니다.

def request_opinion(self, cr, uid, ids, context=None): 
    self.write(cr, uid, ids, {'state': 'requested', 'request_state': self.browse(cr, uid, ids, context=context)[0].generic_request_id.state }) 
    return True 

이렇게하면 내 문제가 해결되었습니다.
앞으로 남을 도움이되기를 바랍니다.

관련 문제