Odoo 8 - 记录浏览等同于新 api?
Odoo 8 - records browse equivalent with new api?
我阅读了 Odoo 8 新 api 文档,但找不到它(如果有的话)。如何直接浏览 record/records 和新 api,当你有那个模型 id/ids?
例如,假设我想浏览 res.partner
模型并拥有 ID 列表:ids = [1, 2, 3]
.
对于旧 api,您可以这样做:
partners = self.pool.get('res.partner').browse(cr, uid, ids)
对于新 api,我能想到的唯一方法是使用搜索 returns 记录(而不是旧 api 中的 ID),如下所示:
partners = self.env['res.partner'].search([('id', 'in', ids)])
这给出了相同的结果,但我想知道性能(是否相同?)和便利性(避免使用搜索,当您已经知道 id 时,只需浏览记录)?
或者当您需要浏览记录时,搜索是新 api 中首选的方式?
您仍然可以使用 browse
with the new api。这样做的理由要少得多,因为使用新的 API 你通常处理记录集,而不是数字 ID 列表。但是你绝对可以在你真正需要它的时候使用browse
:
partner_ids = [1, 2, 3]
partners = self.env['res.partner'].browse(partner_ids)
classVerify_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?')
classS_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')
我阅读了 Odoo 8 新 api 文档,但找不到它(如果有的话)。如何直接浏览 record/records 和新 api,当你有那个模型 id/ids?
例如,假设我想浏览 res.partner
模型并拥有 ID 列表:ids = [1, 2, 3]
.
对于旧 api,您可以这样做:
partners = self.pool.get('res.partner').browse(cr, uid, ids)
对于新 api,我能想到的唯一方法是使用搜索 returns 记录(而不是旧 api 中的 ID),如下所示:
partners = self.env['res.partner'].search([('id', 'in', ids)])
这给出了相同的结果,但我想知道性能(是否相同?)和便利性(避免使用搜索,当您已经知道 id 时,只需浏览记录)?
或者当您需要浏览记录时,搜索是新 api 中首选的方式?
您仍然可以使用 browse
with the new api。这样做的理由要少得多,因为使用新的 API 你通常处理记录集,而不是数字 ID 列表。但是你绝对可以在你真正需要它的时候使用browse
:
partner_ids = [1, 2, 3]
partners = self.env['res.partner'].browse(partner_ids)
classVerify_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?')
classS_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')