Odoo - 了解新api中的记录集

时间:2016-08-18 06:26:45

标签: api loops openerp field

请查看以下代码块:

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循环内外都是一样的东西。如果它总是一个'记录集',那么如何访问一个记录的字段。

我缺乏理解也可能与这个问题有关:

Odoo - Cannot loop trough model records

1 个答案:

答案 0 :(得分:1)

使用RecordSets总是意味着使用RecordSets。循环遍历一个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