2015-02-05 3 views
4

Odoo 8 새로운 API 설명서를 읽었지만 찾을 수 없습니다 (있는 경우). 그 모델 ID/ID가있을 때 새로운 API로 레코드/레코드를 직접 검색하는 방법은 무엇입니까?Odoo 8 - 레코드가 새 API와 동일한 기능을 수행합니까?

예를 들어 res.partner 모델을 찾아보고 id : ids = [1, 2, 3] 목록을 갖고 싶다고 가정 해 보겠습니다.

된 API를

,이 같은 그것을 할 수 :

partners = self.pool.get('res.partner').browse(cr, uid, ids) 

새로운 API를, 내가 생각할 수있는 유일한 방법은,이 레코드를 반환으로 (기존 API를 같이하지 IDS) 검색을 사용하는 것이 었습니다 이 같은 :

partners = self.env['res.partner'].search([('id', 'in', ids)]) 

이 같은 결과를 제공하지만, 내가 (단지 기록을 찾아 볼 필요가, 당신은 이미 ID를 알고있을 때, 검색을 사용하지 않도록하기 위해) (가 동일?) 편리 성과에 대해 궁금하네요 ?

또는 레코드를 탐색해야 할 때 새 API에서 검색을 사용하는 것이 좋습니다.

답변

5

browse with the new api을 계속 사용할 수 있습니다. 새 API를 사용하면 대개 숫자 ID 목록 대신 레코드 집합을 처리하기 때문에 그렇게 할 이유가 훨씬 적습니다.

partner_ids = [1, 2, 3] 
partners = self.env['res.partner'].browse(partner_ids) 
+0

덕분에, :) 직접적 새로운 API로 구현 된 생각하지 않았다. 예, 일반적으로 찾아 볼 필요는 없지만 일부 오래된 메서드를 처리 할 때 때때로 레코드 세트 대신 ID를 얻습니다. 따라서 이미 알고있는 것을 검색하는 대신 탐색하는 것이 더 편리합니다. – Andrius

+0

자동 번역 레이어가 있습니다. 새 API를 사용하여 정의 된 모든 메소드는 이전 API (cr, uid, context, ... arguments)를 사용하여 호출 할 수 있으며 이전 API를 사용하여 정의 된 이전 메소드는 새 API를 사용하여 호출 할 수 있습니다 (명시 적 cr, uid , 컨텍스트, ... 인수). 따라서 새로운 API에 대해 특정 메소드가 재 작성되었는지 여부는 중요하지 않습니다 (실제로'browse'가 재 작성되었습니다). 새 API를 사용하여 동일하게 호출 할 수 있습니다. –

+0

그래, 알아. 나는 레코드 세트가 아닌 ID를 반환하는 메서드에 대해 이야기하고있었습니다. 예를 들어, 일반적인 메소드'get_external_id()'는 새로운 API를 사용하여 호출 한 경우에도 레코드 id가'key'이고 외부 id가'value' 인 사전을 리턴합니다. – Andrius

1

클래스 Verify_Time (models.Model) : _name = 'verify.time'

@api.model 
def default_get(self, fields_name): 
    update_ids = [] 
    data = super(Verify_Time, self).default_get(fields_name) 
    if self._context.get('active_id'): 
     student_id = self._context.get('active_id') 
     for record in self.env['student.student'].browse(student_id): 
      for time_record in record.time_table_ids: 
       update_ids.append((0,0,{'standared_id':time_record.standared_id.id, 
             'subject_id':time_record.subject_id.id, 
             'start_time':time_record.start_time, 
             'end_time':time_record.end_time})) 
    data['s_time_ids'] = update_ids 
    return data 

s_time_ids = fields.One2many('s.time', 'verify_id', 'Time') 
verify = fields.Selection(VERIFY, 'Verified?') 

클래스 S_Time (일부 모델 당신이 실제로 그것을 필요로 할 때 그러나 당신은 반드시 홀수 시간 동안 browse을 사용할 수 있습니다 .MODEL) : _name = 's.time'

verify_id = fields.Many2one('verify.time', 'Verify') 
serial_no = fields.Integer('#') 
standared_id = fields.Many2one('standared.standared', 'Standared') 
subject_id = fields.Many2one('section.section', 'Subject') 
start_time = fields.Datetime('Start Time') 
end_time = fields.Datetime('End Time') 
관련 문제