Odoo 8 - 记录与新api相同的浏览?

时间:2015-02-05 09:09:19

标签: api openerp odoo openerp-8

我阅读了Odoo 8新的api文档,但找不到它(如果有的话)。当你有模型id / ids时,如何使用新的api直接浏览记录/记录?

例如,我想要浏览res.partner模型,并列出ID ids = [1, 2, 3]

使用旧api,你可以这样做:

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

使用新的api,我能想到的唯一方法是使用搜索,因为它返回记录(而不是像旧api中的ID),如下所示:

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

这给出了相同的结果,但我想知道性能(它是否相同?)和方便性(避免使用搜索,当你已经知道id时,只需要浏览记录)?

或者搜索是新api的首选方式,当您需要浏览记录时使用?

2 个答案:

答案 0 :(得分:5)

您仍然可以使用browse with the new api。这样做的理由要少得多,因为使用新的API通常会处理记录集,而不是数字ID列表。但是你真的可以在奇怪的时候使用browse

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

答案 1 :(得分:1)

class 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(models.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')