Odoo - 了解新 api 中的记录集

Odoo - Understanding recordsets in the new api

请看下面的代码块:

class hr_payslip:
    ...
    @api.multi      # same behavior with or without method decorators
    def do_something(self):
        print "self------------------------------->",self
        for r in self:
            print "r------------------------------->",r

如您所见,我正在重写 'hr.payslip' 模型,我需要访问此方法中的某些字段。问题是打印的内容对我来说没有意义:

self-------------------------------> hr.payslip(hr.payslip(1,),)
r-------------------------------> hr.payslip(hr.payslip(1,),)

为什么for循环内外是一样的东西。如果它总是 'recordset',如何访问一条记录的字段。

我的理解不足可能也与这个问题有关:

在 RecordSet 上工作始终意味着在 RecordSet 上工作。当您遍历一个 RecordSet 时,您将获得 RecordSets 作为循环变量。但是只有当 RecordSet 的长度为 1 或 0 时,你才能直接访问字段。你可以很容易地测试它(数据库中的工资单不止一张!):

slips = self.env['hr.payslip'].search([])
# Exception because you cannot access the field directly on multi entries
print slips.id
# Working
print slips.ids
for slip in slips:
    print slip.id